recherche

Maison  >  Questions et réponses  >  le corps du texte

Guide pratique pour les tests unitaires des composants Vue et les méthodes de simulation à l'aide de ViTest

<p>Utilisez Vitest pour simuler des méthodes et des composants de vue de tests unitaires. </p> <p><em>MyComponent.vue</em></p> <pre class="brush:php;toolbar:false;"><configuration du script> importer { ref } depuis "vue" ; const isSelectAll = ref(true); const selectAllModel = ref(false); const onChange = () => isSelectAll.value = vrai ; selectAllModel.value = faux ; } ; const onVisibleChange = () => // fait autre chose que d'appeler sur le changement(); } ; </script></pre> <p>Je souhaite tester la méthode <code>onVisibleChange</code> en simulant <code>onChange</code> et vérifier si <code>onChange</code> </p> <p><em>MyComponent.spec.js</em></p> <pre class="brush:php;toolbar:false;">importer { mount } depuis 'vitest'; importer { ref } depuis 'vue' ; importer MyComponent depuis './MyComponent.vue' ; décrire('MonComposant', () => { const wrapper =shallowMount(MonComponent); const spy = vi.spyOn(wrapper.vm, 'onChange'); wrapper.vm.onVisibleChange(); attendre(espion).toHaveBeenCalled(); expect(wrapper.vm.onChange).toHaveBeenCalled(); // Les deux attentes donnent l'erreur : AssertionError : "onChange" devrait être appelé au moins une fois. //J'ai aussi essayé const mock = vi.fn(); wrapper.vm.onChange = mock; wrapper.vm.onVisibleChange(); expect(mock).toHaveBeenCalled(); // AssertionError : "espion" devrait être appelé au moins une fois expect(wrapper.vm.onChange).toHaveBeenCalled(); // TypeError : [Function onChange] n'est pas un espion ou un appel à un espion ! })</pre></p>
P粉445750942P粉445750942457 Il y a quelques jours575

répondre à tous(1)je répondrai

  • P粉311423594

    P粉3114235942023-08-29 12:51:44

    Les méthodes de test ne sont pas une bonne idée. Car le nom de la fonction peut changer.

    Une meilleure façon est de tester :

    1. Événements émis par les composants. Peut-être que votre onChange() contient l'émission d'événements. Ce problème devrait être testé.
    2. Changements dans les modèles. Par exemple, votre onChange() modifie le modèle. Ces changements devraient donc également être testés.
    3. Appelez d’autres fonctions. Par exemple, vous disposez de certaines fonctions communes à tous les projets. Ces fonctions peuvent être testées en utilisant spy.on.

    répondre
    0
  • Annulerrépondre