Anleitung zum Unit-Testen von Vue-Komponenten und Mock-Methoden mit ViTest
P粉445750942
2023-08-29 00:23:20
<p>Verwenden Sie vitest, um Methoden und Unit-Test-Vue-Komponenten zu simulieren. </p>
<p><em>MyComponent.vue</em></p>
<pre class="brush:php;toolbar:false;"><script setup>
import { ref } aus „vue“;
const isSelectAll = ref(true);
const selectAllModel = ref(false);
const onChange = () =>
isSelectAll.value = true;
selectAllModel.value = false;
};
const onVisibleChange = () =>
// etwas tun als anrufen
bei Änderung();
};
</script></pre>
<p>Ich möchte die Methode <code>onVisibleChange</code> testen, indem ich <code>onChange</code> </p>
<p><em>MyComponent.spec.js</em></p>
<pre class="brush:php;toolbar:false;">import { mount } from 'vitest';
import { ref } aus 'vue';
importiere MyComponent aus './MyComponent.vue';
beschreiben('MyComponent', () => {
const wrapper = flachMount(MyComponent);
const spy = vi.spyOn(wrapper.vm, 'onChange');
wrapper.vm.onVisibleChange();
erwarten(spy).toHaveBeenCalled();
erwarten(wrapper.vm.onChange).toHaveBeenCalled();
// Beide Erwartungswerte geben einen Fehler aus: AssertionError: erwartet, dass „onChange“ mindestens einmal aufgerufen wird
//Auch versucht
const mock = vi.fn();
wrapper.vm.onChange = mock;
wrapper.vm.onVisibleChange();
Expect(mock).toHaveBeenCalled(); // AssertionError: erwartet, dass „spy“ mindestens einmal aufgerufen wird
expect(wrapper.vm.onChange).toHaveBeenCalled(); // TypeError: [Function onChange] ist kein Spion oder ein Aufruf an einen Spion!
})</pre></p>
测试方法并不是一个好主意。因为函数的名称可能会改变。
更好的方法是测试:
onChange()
包含了事件的发出。这个发出应该被测试。onChange()
改变了模板。所以这些变化也应该被测试。spy.on
进行测试。