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