Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk mengejek Import Modul ES6 dalam Jest Menggunakan import *?

Bagaimana untuk mengejek Import Modul ES6 dalam Jest Menggunakan import *?

DDD
DDDasal
2024-10-24 05:22:02777semak imbas

How to Mock ES6 Module Imports in Jest Using import *?

Mengejek Import Modul ES6 dalam Jest

Dalam Jasmine, mengejek import modul ES6 adalah mudah. Walau bagaimanapun, dalam Jest, prosesnya boleh menjadi lebih mencabar, terutamanya apabila berurusan dengan modul yang menggunakan eksport lalai. Artikel ini meneroka cara untuk mengejek import modul ES6 dalam Jest menggunakan import * hack yang mudah.

Secara tradisinya, mengejek import diperlukan menggantikan import dengan keperluan dan mengisytiharkannya dalam ujian. Pendekatan ini mungkin tidak diingini.

<code class="javascript">// undesirable approach
import myModule from '../myModule';
import dependency from '../dependency';

describe('myModule', () => {
  // ...
});</code>

Sebaliknya, kami boleh memanfaatkan import * untuk mengubah eksport modul secara langsung, membolehkan kami mengejek fungsi yang diingini atau eksport lalai. Untuk eksport bernama:

<code class="javascript">import * as dependency from '../dependency';

// ...

dependency.doSomething = jest.fn(); // mutate the named export
myModule(2);

expect(dependency.doSomething).toBeCalledWith(4);</code>

Begitu juga, untuk eksport lalai:

<code class="javascript">import * as dependency from '../dependency';

// ...

dependency.default = jest.fn(); // mutate the default export
myModule(2);

expect(dependency.default).toBeCalledWith(4);</code>

Walaupun kaedah ini menawarkan penyelesaian untuk mengejek import ES6, adalah penting untuk ambil perhatian bahawa ia melibatkan mutasi modul yang diimport , yang boleh memperkenalkan kesan sampingan dan potensi isu dalam pelaksanaan ujian. Oleh itu, menggunakan kaedah ejekan asli Jest, seperti jest.spyOn atau jest.mock, disyorkan sebagai pendekatan pilihan.

Atas ialah kandungan terperinci Bagaimana untuk mengejek Import Modul ES6 dalam Jest Menggunakan import *?. 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