【问题标题】:How to test catch function with Jest如何用 Jest 测试 catch 函数
【发布时间】:2019-01-04 07:13:54
【问题描述】:

如何从这样的函数中测试捕获:

getApi () {
    const URL = '/api/division?key='
    axios.get(URL)
      .then((response) => {
        this.counter = response.data
      })
      .catch(err => {
        alert(err)
      })
  }

我正在使用 axios 和 vue js 来测试 JEST。希望有任何解决方案,谢谢:')

【问题讨论】:

    标签: vue.js mocking axios jestjs


    【解决方案1】:

    试试axios-mock-adapter,它可以模拟axios.get() 调用的结果,允许您模拟特定请求的网络错误/超时(从而在您的代码中调用catch 回调):

    import axios from "axios";
    import MockAdapter from "axios-mock-adapter";
    
    const mock = new MockAdapter(axios);
    mock.onGet(`/* URL used by component */`).networkError();
    

    getApi() 的示例单元测试:

    it("does not modify username from network error", async () => {
      mock.onGet(`/* URL used by component */`).networkError();
      await wrapper.vm.getApi();
      expect(wrapper.vm.username).toBe(INIT_USERNAME);
    });
    
    it("does not modify username from network timeout", async () => {
      mock.onGet(`/* URL used by component */`).timeout();
      await wrapper.vm.getApi();
      expect(wrapper.vm.username).toBe(INIT_USERNAME);
    });
    

    demo

    【讨论】:

    • @Nadya 没问题 :)
    • @NadyaPrabaningrum 看起来您可以将其标记为正确,如果您的其他问题已得到解答,您可以使用对勾将它们标记为已修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 2020-06-22
    • 2022-01-24
    • 2020-11-30
    • 2020-10-29
    • 2020-01-24
    • 2017-07-15
    相关资源
    最近更新 更多