无法读取未定义的属性“mockResolvedValue”
Posted
技术标签:
【中文标题】无法读取未定义的属性“mockResolvedValue”【英文标题】:Cannot read property 'mockResolvedValue' of undefined 【发布时间】:2020-08-20 22:47:08 【问题描述】:我在模拟我的 api 调用时遇到错误
TypeError: Cannot read property 'mockResolvedValue" of undefined
并且不知道为什么。我正在利用 jest 来测试我的 api fetch 调用函数。
这是我要导出的函数:
//file amData.jsx
const axios = require('axios');
async function fetchAssetManagerSummary()
const response = await axios.get("https://www.exampleUrl.com");
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)
);
我得到的错误:
【问题讨论】:
"Cannot read property 'mockResolvedValue" of undefined" 与问题标题中的表述有很大不同。请更正标题。 【参考方案1】:既然您已经模拟了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'
]
);
【讨论】:
为什么不模拟原始问题确实有效,因为这正是开玩笑文档所说的:jestjs.io/docs/en/mock-functions#mocking-modules 我有完全相同的问题,不知道为什么它实际上没有按照文档工作以上是关于无法读取未定义的属性“mockResolvedValue”的主要内容,如果未能解决你的问题,请参考以下文章
NextJS:未捕获的类型错误:无法读取未定义的属性(读取“属性”)