Bagaimana untuk Mengejek Import Modul ES6 secara Berkesan dalam Jest?

Mary-Kate Olsen
Lepaskan: 2024-10-24 00:24:02
asal
613 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!