[英]How to spy on individual functions that are default exports
我試圖監視 function 使用的 function 我實際上正在測試,所以結構有點像這樣:
const trueOrFalse = (args) => {
return true // or false;
}
export default TrueOrFalse;
和我想將它導入的 function
import trueOrFalse from './trueOrFalse';
const myFunc = () => {
const successful = trueOrFalse();
if (!successful) return;
// Otherwise do something else
}
例如,對於我現在的測試,我需要我的trueOrFalse()
始終返回false
。 如果這是以不同的方式導出的,我可以像這樣使用jest.spyOn
:
jest.spyOn(utils, 'trueOrFalse').mockImplementation(() => false);
但由於這是默認導出,我不能這樣做,可以嗎?
jest.spyOn(???, 'trueOrFalse').mockImplementation(() => false);
如何監視或模擬這個依賴的 function?
可以在模塊 object 上監視或模擬函數:
import * as trueOrFalseMod from './trueOrFalse';
...
jest.spyOn(trueOrFalseMod, 'default');
這是因為 ES 導入在內部導入后總是引用 object 屬性。 如果模塊 object 根據 ES 模塊規范是只讀的,這可能不起作用,這取決於特定的 Jest 設置。
否則需要模擬一個模塊:
import trueOrFalse from './trueOrFalse';
jest.mock('./trueOrFalse');
這應該導致trueOrFalse
成為可以根據測試更改實現的存根:
trueOrFalse.mockReturnValue(false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.