模拟api调用时出现错误
TypeError: Cannot read property 'mockResolvedValue" of undefined
,无法弄清原因。我正在利用玩笑来测试我的api提取调用功能。
这是我要导出的功能:
//file amData.jsx
const axios = require('axios');
async function fetchAssetManagerSummary() {
const response = await axios.get("https://fr-assetmanager.azurewebsites.net/File/GetOverview?runDat=04/01/2020");
return response.data;
}
module.exports = fetchAssetManagerSummary;
这是我的测试文件
const fetchAssetManagerSummary = require('./amData');
const axios = require('axios');
jest.mock("axios");
it("returns the object from fetch", async () => {
axios.get.mockResolvedValue({
data: [
{
userId: 1,
id: 1,
title: 'test'
}
]
})
const data = await fetchAssetManagerSummary();
console.log("data", data)
});
我得到的错误:
答案 0 :(得分:11)
由于您已经模拟了axios
类,因此模拟axios.get返回值的一种方法是执行以下操作:
axios.get = jest.fn().mockResolvedValue({
data: [
{
userId: 1,
id: 1,
title: 'test'
}
]
});
.
.
expect(axios.get).toHaveBeenCalledTimes(1);
或者,您可以监视axios.get()并提供模拟的返回值:
jest.spyOn(axios, 'get').mockResolvedValueOnce({
data: [
{
userId: 1,
id: 1,
title: 'test'
}
]
});