【发布时间】:2020-07-25 09:16:10
【问题描述】:
我正在尝试测试以下函数,或者换句话说,我正在尝试编写以下函数的单元测试用例。但是我收到错误 _axios.default.get.mockResolvedValueOnce is not a function
import React from "react";
import axios from "axios";
export default () => {
const [state, setState] = React.useState([]);
const fetchData = async () => {
const res = await axios.get("https://5os4e.csb.app/data.json");
setState(res.data);
};
React.useEffect(() => {
(async () => {
await fetchData();
})();
}, []);
return [state];
};
这是我的代码 https://codesandbox.io/s/awesome-jepsen-5os4e?file=/src/usetabData.test.js
我就是这样写单元测试用例的
import useTabData from "./useTabData";
import { act, renderHook, cleanup } from "@testing-library/react-hooks";
import mockAxios from "axios";
describe("use tab data", () => {
afterEach(cleanup);
it("fetch tab data", async () => {
mockAxios.get.mockResolvedValueOnce({
data: {
name: "hello"
}
});
await act(async () => renderHook(() => useTabData()));
expect(mockAxios.get).toHaveBeenCalled();
});
});
【问题讨论】:
-
import mockAxios from "axios";看起来是 axios 的默认导出。您的意思是要导入它的 some 模拟版本吗? -
我正在尝试模拟 axios 。还有其他方法吗>
-
看到我创建了
__mocks___文件夹 -
@DrewReese 你明白我的意思了吗?
-
是的,但不幸的是,我更喜欢使用组件进行测试,并在必要时按需模拟导入,因此我对
__mocks__和__tests__目录的经验很少。不过,您的问题似乎已得到解决。
标签: javascript reactjs jestjs axios react-hooks-testing-library