我想检查方法而不发送请求,我只想获取配置以测试方法和参数,我尝试执行此操作,但测试始终通过
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");
任何人都知道会发生什么...。我不想创建模拟服务器...只想让配置进行测试
答案 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请求,因此您实际上并未向该端点发出请求。令人高兴的是,所有有关代码的内容认为都是如此。