ViTest を使用した Vue コンポーネントとモック メソッドの単体テストのハウツー ガイド
P粉445750942
P粉445750942 2023-08-29 00:23:20
0
1
530
<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>
P粉445750942
P粉445750942

全員に返信(1)
P粉311423594

方法をテストするのは得策ではありません。関数の名前が変更される可能性があるため。

より良い方法はテストすることです:

  1. コンポーネントから発行されるイベント。おそらく onChange() にはイベントの発行が含まれています。この問題はテストする必要があります。
  2. テンプレートの変更。たとえば、onChange() はテンプレートを変更します。したがって、これらの変更もテストする必要があります。
  3. 他の関数を呼び出します。たとえば、プロジェクト間で共通の関数がいくつかあるとします。これらの機能は、spy.on を使用してテストできます。
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!