我正在使用Mocha和Chai为Node.js中的API开发测试脚本。我有一个称为/ measurements的端点。该端点应返回statusCode 200。
这就是我要达到的目标的方式:
var request = require("request");
var chai = require("chai");
var expect = chai.expect;
// Criamos nosso primeiro caso de teste e fornecemos uma descricao utilizando describe
describe("Teste monitora-sec", function () {
it("Deve receber as medições", function (done) {
request.get('localhost:3000/measurements')
.expect(200)
.end(function (err, res) {
expect(res.body).to.have.lengthOf(506);
done(err);
});
});
});
当我在gitbash上运行mocha
时,出现此错误:
Teste monitora-sec
1) Deve receber as medições
0 passing (34ms)
1 failing
1) Teste monitora-sec
Deve receber as medições:
Error: Invalid protocol: localhost:
at Request.init (node_modules\request\request.js:458:31)
at new Request (node_modules\request\request.js:127:8)
at request (node_modules\request\index.js:53:10)
at Function.get (node_modules\request\index.js:61:12)
at Context.<anonymous> (test\measurement.spec.js:11:17)
我在做什么错了?
[编辑]
解决方案
稍微更改一下代码:
var request = require("request");
var chai = require("chai");
var expect = chai.expect;
var urlBase = "http://localhost:3000";
describe("Teste monitora-sec", function () {
it("Deve receber as medições", function (done) {
request.get(
{
url: urlBase + "/measurementsLast"
},
function (error, response, body) {
// precisamos converter o retorno para um objeto json
var _body = {};
try {
_body = JSON.parse(body);
}
catch (e) {
_body = {};
}
expect(response.statusCode).to.equal(200);
done(); // avisamos o test runner que acabamos a validacao e ja pode proseeguir
}
);
});
});
问题之一是我只写了localhost:3000
。应该是http://localhost:3000
答案 0 :(得分:2)
问题在于localhost:3000
不是有效地址。
将其更改为http://localhost:3000
,请求就可以了。