javascript - 如何解决 Jest 模拟中的 Flow 类型错误

标签 javascript jestjs flowtype

我正在使用 Jest 模拟模块中的某些功能并以下列方式进行测试:

jest.mock("module", () => ({
  funcOne: jest.fn(),
  funcTwo: jest.fn(),
  ...
}));

import {funcOne, funcTwo, ...} from "module";

test("something when funcOne returns 'foo'", () => {
  funcOne.mockImplementation(() => 'foo');  // <- Flow error
  expect(...)
});

test("that same thing when funcOne returns 'bar'", () => {
  funcOne.mockImplementation(() => 'bar');  // <- Flow error
  expect(...)
});

如何阻止 Flow 报告 property 'mockImplementation' not found in statics of function 错误没有错误抑制(例如 $FlowFixMe)?

我知道这个问题是因为模块中定义的函数不是 Jest 模拟函数,并且就 Flow 而言,不包含 mockImplementationmockReset

最佳答案

谢谢 Andrew Haines,对 related issue 的评论您发布的内容提供了解决方案。我对以下内容感到满意:

const mock = (mockFn: any) => mockFn;

test("something when funcOne returns 'foo'", () => {
    mock(funcOne).mockImplementation(() => 'foo');  // mo more flow errors!
    ...
});

关于javascript - 如何解决 Jest 模拟中的 Flow 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45023871/

相关文章:

unit-testing - 在 Jest 中,当使用函数生成 describe/it block 时,有没有办法让 beforeAll/beforeEach block 在断言之前运行?

reactjs - Jest 测试失败 : TypeError: window. matchMedia 不是函数

flowtype - 方法 `U` 调用的类型参数 `then` 。缺少注释

javascript - React 元素中的 React Redux Flowtype "property not found"从 redux connect 获取属性

javascript - 获取没有最后一段的 URL 路径

javascript - 如何在 Javascript 中动态命名数组?

javascript - 如何检测用户是否已经打开了某个网址并在已打开的情况下重定向到相同的网址?

javascript - toLocaleDateString 使用相同的语言是不同的

javascript - 如何在 react 中传递具有已知字段的对象作为 Prop

javascript - toString 哪里不起作用?