ホームページ  >  に質問  >  本文

TypeError: null のプロパティ 'type' を読み取れません - 非同期関数を使用した vue コンポーネントのテスト

<p>コンポーネント ComponentA.spec.js をテストしていますが、<code>TypeError: Cannot read property 'type' of null</code> が発生します。 ComponentA の getData() 関数の wait キーワードを削除すると、機能します。テストで getData API 呼び出しをモックしましたが、それでも動作しません。 </p> <p>これは完全なスタックです TypeError: C: [プライバシー]\Unknown: null </p> のプロパティ 'type' を読み取れません。 <pre class="brush:js;toolbar:false;">atassert (node_modules/@babel/types/lib/asserts/generated/index.js:284:112) Object.assertIdentifier (node_modules/@babel/types/lib/asserts/generated/index.js:373:3) で 新しい CatchEntry (node_modules/regenerator-transform/lib/leap.js:93:5) で Emitter.Ep.explodeStatement (node_modules/regenerator-transform/lib/emit.js:535:36) で node_modules/regenerator-transform/lib/emit.js:323:12 で Array.forEach (<匿名>) Emitter.Ep.explodeStatement (node_modules/regenerator-transform/lib/emit.js:322:22) で Emitter.Ep.explode で (node_modules/regenerator-transform/lib/emit.js:280:40) </pre> <p>これはテストを作成しようとしているコンポーネントです、A</p> <pre class="brush:js;toolbar:false;"><テンプレート> <div class="d-flex flex-row"> <コンポーネント-b /> <コンポーネント-c /> </div> </テンプレート> <スクリプト> './ComponentB' から ComponentB をインポートします。 './ComponentC' から ComponentC をインポートします。 import { getData } から 'apis'; デフォルトのエクスポート { 名前: 'コンポーネント-a'、 コンポーネント: { コンポーネントB、 コンポーネントC、 }、 非同期作成() { this.getData() を待ちます。 }、 メソッド: { // この関数が原因です 非同期 getData() { 試す { const 応答 = getData() を待ちます。 } キャッチ { // } }、 }、 }; </スクリプト> </pre> <p>これは私の ComponentA.spec.js ファイルです</p> <pre class="brush:js;toolbar:false;">「vuetify」から Vuetify をインポートします; 'components/ComponentA' から ComponentA をインポートします。 import { createLocalVue,shallowMount,mount } from '@vue/test-utils'; jest.mock('shared/apis', () => { const data = require('../fixedData/data.json'); 戻る { getData: jest.fn().mockResolvedValue(data)、 }; }); const localVue = createLocalVue(); 華やかにしましょう。 function createShallowWrapper(options = {}) { returnshallowMount(ComponentA, { ローカルビュー、 華やぐ、 ...オプション、 }); } beforeEach(() => { vuetify = 新しい Vuetify(); }); description('コンポーネントA', () => { description('コンポーネントの作成', () => { test('テスト中', () => { const ラッパー = createShallowWrapper(); Expect(wrapper).toMatchSnapshot(); }); }); }); </pre></p>
P粉818306280P粉818306280440日前550

全員に返信(1)返信します

  • P粉252423906

    P粉2524239062023-08-29 19:55:04

    ComponentA の getData 関数のキャプチャに例外変数 (e) を追加すると、問題が修正されました。

    返事
    0
  • キャンセル返事