Mocha测试API没有响应

时间:2019-01-10 16:37:41

标签: javascript api testing mocha

我正在尝试在Mocha中测试节点API,但没有收到在浏览器中正常运行的API请求的响应。

这是浏览器中的响应:

浏览器中的响应: {“成功”:true}

这是不起作用的API测试:

var request = require("request");
var expect = require("chai").expect;

describe("API TEST", function(){
    it("Should return true", function(done){

        request.get({ url: "https://skilltree.benis.hu/apitest" },
            function(error, response, body) {
                    console.log(response);
                done();
            });
    });
});

结果:

API TEST->未定义(响应=未定义)

但是测试语法似乎不错,因为它可以与公共API一起使用:

describe("API TEST", function(){
        it("Should return true", function(done){

        request.get({ url: "https://anapioficeandfire.com/api/characters/583" },
            function(error, response, body) {

                    console.log(response);
                done();
            });
    });
});

结果: 结果是一堆响应数据。

试图在POSTMAN中进行测试,可能找到了问题,不确定:无法得到答复。

可能的解决方案:

  

关闭ssl证书验证<-做到了这一点   在邮递员中关闭SSL证书验证,并且可以正常工作:

响应与浏览器中的响应相同: {“ succes”:true}

为了测试,我也试图找到一种在代码中禁用它的方法,但是我没有运气。这几乎是我第一次测试任何东西。

1 个答案:

答案 0 :(得分:0)

您的假设是正确的,因为它是与证书验证有关的问题。我相信这应该可行:

 it.only("Should return true", function(done){
     process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
     request.get({ url: "https://skilltree.benis.hu/apitest" },
     function(error, response) {
       console.log(response.body);
       done();
     });
 });

运行它时,我得到{"succes":true}

请注意,这仅是出于演示目的,process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';不应作为每个测试的一部分,而应在更高级别进行定义,以使其仅运行一次。