簡體   English   中英

如何監視默認導出的單個函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM