配置 Jest 以使用 Create React App 在测试之间重置模拟

Dev*_*avo 3 reactjs jestjs

当我将以下代码添加到我的时,package.json我收到一条错误消息,指出它不受支持:

"jest": {
    "resetMocks": true
},
Run Code Online (Sandbox Code Playgroud)
  1. 我很困惑为什么这不起作用,因为它似乎已添加到此拉取请求中
  2. 还有另一种方法吗?

提前致谢!

Bri*_*ams 5

解决方案

将以下内容添加到src/setupTests.js

beforeEach(() => {
  jest.resetAllMocks()
})
Run Code Online (Sandbox Code Playgroud)

细节

选项文档resetMocks指出,将其设置true为“相当于在每次测试之间调用 jest.resetAllMocks()”。

查看Jest源代码表明检查config.resetMocks发生在 a 内beforeEach(),如果true它调用jest.resetAllMocks().

create-react-app使用react-scripts版本0.4.0或更高版本引导的应用程序将在每次测试运行之前自动运行src/setupTests.js以初始化测试环境

所以将上面的代码添加到src/SetupTests.js就相当于为非应用设置了resetMocks选项。truecreate-react-app