TypeError: Tidak dapat membaca 'jenis' sifat null - Menguji komponen vue menggunakan fungsi async
P粉818306280
2023-08-28 23:34:29
<p>Saya sedang menguji komponen ComponentA.spec.js dan saya mendapat <code>TypeError: Tidak dapat membaca 'jenis' sifat null</code>. Jika saya mengalih keluar kata kunci tunggu dalam fungsi getData() dalam ComponentA, ia berfungsi. Saya mengejek panggilan getData api dalam ujian saya tetapi ia masih tidak berfungsi. </p>
<p>Ini ialah timbunan lengkap
TypeError: C: [Privasi] Tidak diketahui: Tidak dapat membaca 'jenis' sifat null </p>
<pre class="brush:js;toolbar:false;">at assert (node_modules/@babel/types/lib/asserts/generated/index.js:284:112)
di Object.assertIdentifier (node_modules/@babel/types/lib/asserts/generated/index.js:373:3)
di CatchEntry baharu (node_modules/regenerator-transform/lib/leap.js:93:5)
di Emitter.Ep.explodeStatement (node_modules/regenerator-transform/lib/emit.js:535:36)
di node_modules/regenerator-transform/lib/emit.js:323:12
di Array.forEach (<tanpa nama>)
di Emitter.Ep.explodeStatement (node_modules/regenerator-transform/lib/emit.js:322:22)
di Emitter.Ep.explode (node_modules/regenerator-transform/lib/emit.js:280:40)
</pra>
<p>Ini ialah komponen yang saya cuba buat ujian, A</p>
<pre class="brush:js;toolbar:false;"><template>
<div class="d-flex flex-row">
<komponen-b />
<komponen-c />
</div>
</template>
<skrip>
import KomponenB daripada './ComponentB';
import ComponentC daripada './ComponentC';
import {getData } daripada 'apis';
eksport lalai {
nama: 'komponen-a',
komponen: {
KomponenB,
KomponenC,
},
async dicipta() {
tunggu this.getData();
},
kaedah: {
// Fungsi ini adalah penyebabnya
async getData() {
cuba {
respons const = tunggu getData();
} tangkap {
//
}
},
},
};
</skrip>
</pra>
<p>Ini ialah fail ComponentA.spec.js saya</p>
<pre class="brush:js;toolbar:false;">import Vuetify daripada 'vuetify';
import KomponenA daripada 'komponen/KomponenA';
import { createLocalVue, shallowMount, mount } daripada '@vue/test-utils';
jest.mock('shared/apis', () => {
data const = memerlukan('../fixedData/data.json');
kembali {
getData: jest.fn().mockResolvedValue(data),
};
});
const localVue = createLocalVue();
biarkan vuetify;
fungsi createShallowWrapper(pilihan = {}) {
kembalikan shallowMount(ComponentA, {
localVue,
vuetify,
... pilihan,
});
}
beforeEach(() => {
vuetify = Vuetify baharu();
});
describe('ComponentA', () =>> {
describe('component creation', () => {
ujian('ujian', () => {
const wrapper = createShallowWrapper();
expect(wrapper).toMatchSnapshot();
});
});
});
</pra></p>
Menambahkan pembolehubah pengecualian (e) pada tangkapan dalam fungsi getData dalam ComponentA membetulkan isu tersebut.