Fungsi Mock dalam Modul Yang Sama dengan Jest
Apabila menggunakan Jest untuk mengejek fungsi dalam modul yang sama, adalah penting untuk mengambil kira kemungkinan isu dengan import modul. Satu masalah biasa ialah fungsi yang diimport mungkin mengekalkan rujukan kepada fungsi asal yang tidak dipermainkan, yang membawa kepada tingkah laku yang tidak dijangka.
Untuk menyelesaikan isu ini dengan berkesan, pertimbangkan pendekatan berikut:
Mengasingkan Kod Modul
Import modul ke dalam fail kod yang berasingan, memastikan setiap entiti yang dieksport menggunakan contoh sendiri, dan bukannya merujuk eksport asal daripada fail modul utama. Contohnya:
// module.dev.js import * as thisModule from './module.js'; export function bar() { return 'bar'; } export function foo() { return `I am foo. bar is ${thisModule.bar()}`; // remaining code ...
Mengejek Modul Terpencil
Kini, anda boleh dengan mudah mengejek fungsi bar dalam modul terpencil, kerana fungsi foo kini menggunakan setempat contoh bar:
import * as module from '../src/module-dev'; describe('module', () => { // ... set up mocks and tests spyOn(module, 'bar').and.returnValue('fake bar'); expect(module.foo()).toEqual('I am foo. bar is fake bar'); });
Kelebihan Pengasingan
Mengimport modul ke dalam fail kodnya sendiri mungkin kelihatan tidak konvensional, tetapi ia menawarkan kelebihan yang ketara:
Dengan menggunakan pendekatan ini, anda boleh mengejek fungsi dalam modul yang sama dengan berkesan menggunakan Jest, memastikan kebolehpercayaan dan kecekapan suite ujian anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Fungsi Dalam Modul Yang Sama Dengan Berkesan Menggunakan Jest?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!