Dalam menguji modul ES6, keperluan sering timbul untuk mengejek modul yang diimport untuk mengasingkan dan menegaskan fungsi tertentu. Dalam konteks ini, Jest menyediakan beberapa pilihan untuk mengejek import modul.
Pendekatan tradisional melibatkan mengejek individu bernama eksport atau eksport lalai menggunakan jest.mock atau jest.spyOn, masing-masing. Walau bagaimanapun, untuk senario yang lebih kompleks, kaedah yang lebih fleksibel wujud.
Menggunakan import * membenarkan mengejek semua eksport daripada modul, termasuk eksport dinamakan dan lalai. Berikut ialah kod yang diubah suai menggunakan pendekatan ini:
<code class="js">// dependency.js export const doSomething = (y) => console.log(y); export default (y) => console.log(y); // myModule.js import * as dependency from './dependency'; export default (x) => { dependency.doSomething(x * 2); dependency.default(x * 2); }; // myModule-test.js import myModule from '../myModule'; import * as dependency from '../dependency'; describe('myModule', () => { it('calls the dependency with double the input', () => { dependency.doSomething = jest.fn(); dependency.default = jest.fn(); myModule(2); expect(dependency.doSomething).toBeCalledWith(4); expect(dependency.default).toBeCalledWith(4); }); });</code>
Dalam contoh ini, kami menggantikan import { doSomething } dengan import * sebagai pergantungan untuk mengimport semua eksport yang dinamakan. Kami kemudian secara langsung mengubah objek yang diimport untuk mengejek fungsi yang dieksport menggunakan jest.fn().
Atas ialah kandungan terperinci Bagaimana untuk Mengejek Import Modul ES6 secara Berkesan dalam Jest?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!