ViTest を使用した Vue コンポーネントとモック メソッドの単体テストのハウツー ガイド
<p>vitest を使用して、メソッドと単体テスト vue コンポーネントをシミュレートします。 </p>
<p><em>MyComponent.vue</em></p>
<pre class="brush:php;toolbar:false;"><スクリプトのセットアップ>
「vue」から { ref } をインポートします。
const isSelectAll = ref(true);
const selectAllModel = ref(false);
const onChange = () => {
isSelectAll.value = true;
selectAllModel.value = false;
};
const onVisibleChange = () => {
// 呼び出すよりも何かをする
onChange();
};
</script></pre>
<p><code>onChange</code> をモックして <code>onVisibleChange</code> メソッドを単体テストし、<code>onChange</code> が呼び出されるかどうかを確認したいと考えています。 </p>
<p><em>MyComponent.spec.js</em></p>
<pre class="brush:php;toolbar:false;">import { mount } from 'vitest';
'vue' から { ref } をインポートします。
MyComponent を './MyComponent.vue' からインポートします。
description('MyComponent', () => {
const ラッパー =shallowMount(MyComponent);
const spy = vi.spyOn(wrapper.vm, 'onChange');
「wrapper.vm.onVisibleChange();」
Expect(spy).toHaveBeenCalled();
Expect(wrapper.vm.onChange).toHaveBeenCalled();
// どちらの期待値でもエラーが発生します: AssertionError: Expected "onChange" to be used at少なくとも1回
// こちらも試してみました
const モック = vi.fn();
「wrapper.vm.onChange = モック;」
「wrapper.vm.onVisibleChange();」
Expect(mock).toHaveBeenCalled(); // AssertionError: "spy" が少なくとも 1 回呼び出されることが期待されています
Expect(wrapper.vm.onChange).toHaveBeenCalled(); // TypeError: [関数 onChange] はスパイまたはスパイへの呼び出しではありません。
})</pre></p>