ilm*_*moi 30 javascript unit-testing jestjs
我有相同代码的 2 个版本,一种有效,一种抛出:
TypeError: axios.get.mockResolvedValue is not a function
Run Code Online (Sandbox Code Playgroud)
作品:
const axios = require('axios')
jest.mock('axios') //<<<------
test('should mock axios', async () => {
const resp = {data: {moreData: 'zedata'}}
axios.get.mockResolvedValue(resp)
const actualresp = await getAxios()
expect(actualresp).toEqual({moreData: 'zedata'})
})
Run Code Online (Sandbox Code Playgroud)
不:
const axios = require('axios')
test('should mock axios', async () => {
jest.mock('axios') //<<<------
const resp = {data: {moreData: 'zedata'}}
axios.get.mockResolvedValue(resp)
const actualresp = await getAxios()
expect(actualresp).toEqual({moreData: 'zedata'})
})
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解为什么jest.mock('axios')在测试块内部(或在任何函数内部)移动会导致错误吗?
tmh*_*005 39
Jest 在此链接中明确说明了如何模拟模块https://jestjs.io/docs/en/manual-mocks#mocking-node-modules。
它有一个重要的注释如下:
注意:为了正确模拟,Jest 需要 jest.mock('moduleName') 与 require/import 语句位于同一范围内。
另一方面,大多数用例jest.mock应该在模块的顶层调用,应该可以正常工作:
const axios = require('axios');
// At the same scope with `require`
jest.mock('axios');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36543 次 |
| 最近记录: |