0

我想开玩笑地测试 axios 请求。问题是我已经搜索了很多方法,但没有理解其中的一堆,我被困住了。例如这里是我获取请求

  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);
  });
  }

我怎样才能开玩笑地测试?提前致谢

4

1 回答 1

2

用来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")}`
    );
});
于 2020-06-26T14:56:49.830 回答