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>