Mocha 测试 API 没有响应

Mocha testing API gives no response

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

这是浏览器中的响应:

浏览器响应:{"succes":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 测试 -> 未定义(响应=未定义)

但测试语法似乎很好,因为它适用于 public 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 中进行测试,可能发现了问题,不确定:无法得到响应。

可能的解决方案:

Turn off ssl certificate verification <- did this one Turned off SSL Certificate verification in postman, and it worked:

响应与在浏览器中的响应相同:{"succes":true}

我也试图找到一种方法在代码中禁用它以进行测试,但我没有找到一个。这几乎是我第一次测试任何东西。

您的假设是正确的,这是一个与证书验证相关的问题。我相信这应该有效:

 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'; 不应该是每个测试的一部分,而是在更高级别定义,因此它只 运行 一次。