在本地主机上测试API请求

时间:2019-01-24 11:01:01

标签: node.js api testing mocha chai

我正在使用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

1 个答案:

答案 0 :(得分:2)

问题在于localhost:3000不是有效地址。

将其更改为http://localhost:3000,请求就可以了。