首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在jest中测试axios请求

如何在jest中测试axios请求
EN

Stack Overflow用户
提问于 2020-06-24 20:13:03
回答 1查看 1.2K关注 0票数 0

我想在jest中测试axios请求。问题是,我已经搜索了很多方法,但我不理解它们中的一大堆,我被卡住了。例如,下面是我的get请求

代码语言:javascript
运行
复制
  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中进行测试?提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-26 22:56:50

为此,使用spyOn来模拟一个承诺。最终完成的示例:

代码语言:javascript
运行
复制
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")}`
    );
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62554767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档