使用Jest 模擬同一模組中的函數
使用Jest 模擬同一模組中的函數時,重要的是要考慮可能的問題與模組導入。一個常見的問題是導入的函數可能保留對原始未模擬函數的引用,從而導致意外行為。
要有效解決此問題,請考慮以下方法:
隔離模組程式碼
將模組匯入到單獨的程式碼檔案中,確保每個導出的實體使用其自身的實例,而不是引用主模組檔案中的原始導出。例如:
// 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 ...
模擬獨立模組
現在,您可以輕鬆模擬獨立模組中的 bar 函數,因為 foo 函數現在使用本地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'); });
優點隔離
將模組匯入到自己的程式碼檔案中可能看起來不合常規,但它提供了顯著的優點:
透過採用此方法,您可以使用 Jest 有效地模擬同一模組中的函數,確保測試套件的可靠性和效率。
以上是如何使用 Jest 有效模擬同一模組內的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!