嗨,我是在 Typescript 环境中使用 jest 的新 jest 用户。
通过阅读jest 指南,如果我想模拟一个节点模块,我需要在文件夹中创建一个带有模块名称的__mocks__
文件,以便 jest 导入模拟的模块。例如,如果我想模拟typesafe-actions库,那么我将拥有:
src -> __mocks__
-> typesafe-actions.ts
// __mocks__/typesafe-actions.ts
'use strict';
const typesafe = jest.genMockFromModule('typesafe-actions');
(typesafe as any).createAsyncAction = jest.fn();
module.exports = typesafe;
完成此操作后,我发现需要导入实际模块实现的测试中断,并出现函数未定义错误。jest.unmock('typesafe-actions')
我通过在需要实际模块实现的测试文件的标题中发出一条语句来解决此问题。这是因为测试文件:
- 直接导入模块或
- 通过另一个模块间接导入。
我这样做是正确的,还是有更好的方法?
在使用模拟的测试文件中,我收到一个createAction
不是函数的错误......我如何正确模拟库中的一个函数并使剩余的模块函数保持不变?