如何测试包含 axios 的类组件?

时间:2021-05-27 06:39:26

标签: reactjs testing axios

我必须测试这个组件,但我对如何测试它感到困惑。当我们创建它的实例时如何传递参数。我可以在这里使用 axios-mock-adapter 吗?我在我的项目中使用了这个组件。我是第一次反应测试和使用 axios 的新手。有人可以帮我吗???

这是我的 ApiClient 组件:

@Qualifier

1 个答案:

答案 0 :(得分:0)

是的,您可以使用 axios-mock-adapter 来模拟 axios 调用。

如果你使用的是 axios 默认实例,它很容易使用:

var axios = require("axios");
var MockAdapter = require("axios-mock-adapter");

// This sets the mock adapter on the default instance
var mock = new MockAdapter(axios);

既然你创建了自己的 axios 实例,你就可以

  • 在实例化 ApiClient 时将其作为依赖项传递
  • 在您的测试中将其传递给 MockAdapter 实例
describe('ApiClass', () => {
  const axiosClient = axios.create(yourConfig);
  const axiosMock = new MockAdapter(axiosClient);
  const apiClient = new ApiClient(axiosClient);

  it('fetches this and that', () => {
    // ...
  })

})

我建议看看Mock Service Worker (MSW)。它在网络级别拦截请求并使用模拟数据响应 http 请求。 这可能会增加一些开销,但它

  • 让你免于嘲笑 axios
  • 允许切换到另一个发出请求的库
  • 让您更有信心正确使用 axios 客户端

这个article很好地解释了它。