【发布时间】:2020-05-13 18:42:35
【问题描述】:
这是我运行良好的代码
const axios = require('axios')
const axiosCookieJarSupport = require('axios-cookiejar-support').default
const tough = require('tough-cookie')
axiosCookieJarSupport(axios)
async function getData() {
let cookieJar = new tough.CookieJar()
try {
await axios.post({ jar: cookieJar, withCredentials: true, url: '/user' })
const data = await axios.post({ jar: cookieJar, withCredentials: true, url: '/token' })
return data
} catch (error) {
console.error(error)
return error
}
}
module.exports.getData = getData
这是我的 Jest 测试:
const axios = require('axios');
const getData = require('../getData');
jest.mock("axios");
test('test axios and return data', async () => {
axios.post.mockImplementation((options) => {
switch (options.url) {
case '/user':
return Promise.resolve({ user: 'John' });
break;
case ORMB_URL:
return Promise.resolve({ token: 'testtoken' });
break;
default:
return Promise.reject(new Error('not found'))
}
});
const data = await getData.getData();
console.log(data);
})
现在,Jest 失败了:
axios.post.mockImplementation((options) => {
有错误:
TypeError: axios.post.mockImplementation is not a function
如果我在源代码中评论这一行似乎有效:
axiosCookieJarSupport(axios)
但这正是我现在所需要的。所有其他调用都将失败并注释此行。我做错了什么?
【问题讨论】:
-
我遇到了完全相同的问题,一些测试用例文件正在工作,而另一些则失败并出现相同的错误,即使代码几乎相同。如果我删除
axiosCookieJarSupport(axios),一切都会正常工作。你找到解决办法了吗?
标签: node.js unit-testing jestjs