每次测试笑话后清除模拟

Kev*_*n.a 2 unit-testing jestjs

我正在学习 Jest,我看到正在使用这个clearAllMocks 函数,然后我检查文档,描述如下:

清除所有模拟的mock.calls和mock.instances属性。相当于在每个模拟函数上调用 .mockClear() 。

返回用于链接的笑话对象。

它基本上说明了您通过阅读函数名称已经可以弄清楚的内容。我仍然不知道什么时候应该使用它以及为什么它有用。您能举一个什么时候适合使用的例子吗?

小智 5

jest.clearAllMocks()经常在测试设置/拆除期间使用。

afterEach(() => {
    jest.clearAllMocks()
});
Run Code Online (Sandbox Code Playgroud)

这样做可以确保在测试之间不会存储可能导致错误断言的信息。假设您有一个模拟函数mockFn并且您调用该函数,您可以断言它已被调用1次。如果在另一次测试中您再次调用mockFn但尚未清除模拟,那么现在它会被调用两次而不是一次。