使用 TypeScript 在 Jest 中模拟依赖

新手上路,请多包涵

当测试在不同文件中具有依赖关系的模块并将该模块分配为 jest.mock 时,TypeScript 会给出错误方法 mockReturnThisOnce (或任何其他 jest.mock ) 在依赖项上不存在,这是因为它是以前键入的。

让 TypeScript 从 jest.mock 继承类型的正确方法是什么?

这是一个简单的例子。

依赖

const myDep = (name: string) => name;
export default myDep;

测试.ts

 import * as dep from '../depenendency';
jest.mock('../dependency');

it('should do what I need', () => {
  //this throws ts error
  // Property mockReturnValueOnce does not exist on type (name: string)....
  dep.default.mockReturnValueOnce('return')
}

我觉得这是一个非常常见的用例,不知道如何正确输入。

原文由 Philip Chmalts 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 614
1 个回答

使用 TypeScript 2.8,我们可以使用 ReturnType 这样做:

 import * as dep from "./depenendency"

jest.mock("./dependency")

const mockedDependency = <jest.Mock<ReturnType<typeof dep.default>>>dep.default

it("should do what I need", () => {
  mockedDependency.mockReturnValueOnce("return")
})

原文由 yelliver 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题