Guide pratique pour les tests unitaires des composants Vue et les méthodes de simulation à l'aide de ViTest
P粉445750942
2023-08-29 00:23:20
<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>
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 :
onChange()
contient l'émission d'événements. Ce problème devrait être testé.onChange()
modifie le modèle. Ces changements devraient donc également être testés.spy.on
.