我正在尝试在我的测试中实现一个 fetch 模拟功能。按照教程,我试图通过使用 jest.fn()
来做到这一点:
const fetchFunction = jest.fn(() => {
return null
})
由于某种原因,这不起作用。如果我只是做
console.log(fetchFunction)
在我的测试中,我得到:[Function: mockConstructor] {
_isMockFunction: true,
getMockImplementation: [Function],
mock: [Getter/Setter],
mockClear: [Function],
mockReset: [Function],
mockRestore: [Function],
mockReturnValueOnce: [Function],
mockResolvedValueOnce: [Function],
mockRejectedValueOnce: [Function],
mockReturnValue: [Function],
mockResolvedValue: [Function],
mockRejectedValue: [Function],
mockImplementationOnce: [Function],
mockImplementation: [Function],
mockReturnThis: [Function],
mockName: [Function],
getMockName: [Function]
}
但是,如果我尝试通过 console.log(fetchFunction())
调用它我得到 undefined
?我正在尝试在 create-react-app 文件夹中执行此操作。我必须安装一些额外的东西吗?关于为什么会发生这种情况的任何想法?
最佳答案
这是因为 Create-React-App 有 resetMocks
默认开启。要关闭它,你可以把它放在你的 package.json 中
"jest": {
"resetMocks": false
}
他们在 4.0 版本中改变了这一点。他们确实在他们的更新日志中提到了它https://github.com/facebook/create-react-app/blob/master/CHANGELOG.md#400-2020-10-23但我想我并不是唯一一个错过/不知道这一点的人......有一个关于恢复该更改的未决问题:https://github.com/facebook/create-react-app/issues/9935
关于reactjs - jest.fn 在调用时返回 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65092376/