笑话测试始终通过,使用笑话检查方法请求axios

时间:2018-08-17 13:27:29

标签: javascript typescript axios jestjs

我想检查方法而不发送请求,我只想获取配置以测试方法和参数,我尝试执行此操作,但测试始终通过

import axios from "axios";
it("get Api Call test", () => {

expect.assertions(1);
axios.interceptors.request.use(function (config) {   
    expect(config.method).toBe("get");
    return config;
}, function (error) {   
    return Promise.reject(error);
});

axios.get("testURL");

任何人都知道会发生什么...。我不想创建模拟服务器...只想让配置进行测试

1 个答案:

答案 0 :(得分:0)

您的目标是断言在请求中使用了给定的终结点/ http方法而不进行调用并且没有模拟服务器吗?

我还没有使用axios,所以我将转而使用我曾经使用并取得巨大成功的库。

Nock是一个很棒的库,用于测试您不想发送的HTTP请求。对我来说,这比模拟服务器要好,因为它在比服务器模拟的请求更高的级别上拦截了该请求,从而使其成为更干净的测试。

要使用它,您将需要以下代码段:

const nock = require('nock')
it("get Api Call test", () => {
  var expectedReturn = {itDidntReallyHitTheEndpoint: true}
  var requiredPayloadForSuccess = { tmId: "test", name: "foo" };
  nock('thedomain.com')
    .post('/endpoint/to/hit/in/test', requiredPayloadForSuccess)
    .reply(200, expectedReturn)

  const result = await getResult(endpoint, requiredPayloadForSuccess)
  expect(result, expectedReturn)
})

这使您可以验证各种事情。在此示例中,如果以下原因会导致错误(此示例中可能不包括所有nocks选项,这是一个对许多应用程序非常有用的工具) 1)您使用了错误的HTTP方法 2)你打错了端点 3)您没有传递正确的有效载荷

如果您对该功能不感兴趣,可以不使用requiredPayloadForSuccess,但我认为值得加入。

为了澄清起见,这会拦截http请求,因此您实际上并未向该端点发出请求。令人高兴的是,所有有关代码的内容认为都是如此。