无法读取未定义的属性“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:未捕获的类型错误:无法读取未定义的属性(读取“属性”)

使用地图时反应'无法读取未定义的属性'

如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?

查询返回错误“无法读取未定义的属性(读取'节点')”

无法读取未定义的“已触及”属性