Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengejek Import Modul ES6 secara Berkesan dalam Jest?

Bagaimana untuk Mengejek Import Modul ES6 secara Berkesan dalam Jest?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-24 00:24:02689semak imbas

How to Effectively Mock ES6 Module Imports in Jest?

Mengejek Import Modul ES6 dalam Jest

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.

Mengejek dengan import *

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn