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

DDD
Lepaskan: 2024-10-24 05:22:02
asal
776 orang telah melayarinya

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

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

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

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!

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
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!