【发布时间】:2021-01-25 07:31:45
【问题描述】:
为了模拟 uuidv4,我正在使用这个:
import { v4 as uuidv4 } from "uuid";
jest.mock("uuid");
uuidv4.mockReturnValue("uuid123");
对于模拟 window.confirm,我使用的是这个:
window.confirm = jest.fn().mockImplementation(() => true);
这两者都工作得很好。 但是当我尝试这样做时,即
const uuidv4 = jest.fn.mockImplementation(() => "uuid123");
我收到此错误
TypeError: jest.fn.mockImplementation is not a function
我对 jest.fn() 和 jest.mock() 感到困惑。
有人可以详细说明使用哪个以及何时使用,并提供合适的示例吗?
【问题讨论】:
-
在您的第二个 jest.fn 中,您并没有调用它。一个你成功的问题是你的模拟函数是如何被你正在测试的代码使用的。这就是 jest.mock 的帮助。
-
我在测试中调用它, const id = uuidv4();那是我收到此错误的时候。
-
@kob003 jest.fn.mockImplementation() 和 jest.fn().mockImplementation() 不是一回事。前者是错误的,后者是。 .无论您在哪里调用 uuidv4() 都是另一回事,因为如果您不正确使用 API,您将无法达到这一点。检查文档,它包含执行此操作的必要示例。
标签: unit-testing jestjs mocking