如何用jest进行单元测试时替换全局函数

时间:2017-04-19 03:43:51

标签: reactjs unit-testing jestjs

我正在为模块编写单元测试。我真的需要帮助处理全球变量和功能。 我的问题如下: 假设我想测试名为'needTest.js'的模块。结构如下:

enter image description here

由于我只需要在needTest.js中测试main函数,在我的测试文件中,我首先import main from '../needTest.js'。而我的问题是:函数main不仅需要三个输入p1,p2和p3,它还取决于一些全局变量或函数,如isA,isB,isC。如何在我的测试文件中模拟这些全局变量?我想简单地替换那些全局变量的返回值,让我的测试文件忽略它导入的内容,但只使用我嘲笑的内容。

1 个答案:

答案 0 :(得分:0)

实现这一目标的一种方法是使用Jest' jest.mock method

jest.mock('module-isA-came-from');
jest.mock('module-isB-came-from');
jest.mock('module-isC-came-from');

然后您可以显式传递模块工厂:

jest.mock('module-isA-came-from', () => jest.fn(() => 42));

或者在automocked模块上设置期望值:

isA.mockReturnValue(42);