我想在jest中测试axios请求。问题是,我已经搜索了很多方法,但我不理解它们中的一大堆,我被卡住了。例如,下面是我的get请求
componentDidMount() {
const { getAll, setPageCount } = this.props.actions;
axios
.get(`http://localhost:8080/${localStorage.getItem("username")}`, {
headers: {
"auth-token": localStorage.getItem("auth-token"),
},
})
.then((res) => {
getAll(res.data);
setPageCount();
})
.catch((err) => {
console.log("-----token", localStorage.getItem("auth-token"));
console.log("err", err);
});
}
如何在jest中进行测试?提前感谢
发布于 2020-06-26 22:56:50
为此,使用spyOn
来模拟一个承诺。最终完成的示例:
test('Test', async () => {
const props = {
actions: {
getAll: jest.fn(),
setPageCount: jest.fn()
}
};
const wrapper = shallow(<YourComponent {...props} />);
const getSpySuccess = jest.spyOn(axios, 'get').mockImplementation(() => {
return new Promise((resolve, reject) => {
return resolve({
data:{}
});
});
});
wrapper.instance().componentDidMount();
await wrapper.update();
expect(getSpySuccess).toHaveBeenCalledTimes(1);
expect(props.actions.getAll).toHaveBeenCalledTimes(1);
expect(props.actions.setPageCount).toHaveBeenCalledTimes(1);
expect(getSpySuccess).toBeCalledWith(
`http://localhost:8080/${localStorage.getItem("username")}`
);
});
https://stackoverflow.com/questions/62554767
复制相似问题