新玩笑的用户对模拟打字稿中的节点模块的正确方法感到困惑

时间:2019-12-11 19:23:04

标签: jestjs ts-jest typesafe-actions

嗨,我是在Typescript环境中使用笑话的新笑话用户。

通过阅读jest guide,如果我想模拟节点模块,我需要在__mocks__文件夹中创建一个模块名称为文件的文件,以便开玩笑地导入模拟的模块。例如,如果我想模拟 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不是一个函数...我该如何正确地从库中模拟一个函数,而其余模块函数保持不变?

0 个答案:

没有答案