使用我的Node.js REST API设置Mocha / ChaiHttp单元测试时遇到问题

时间:2017-03-15 01:08:36

标签: javascript node.js mocha chai

我正在尝试使用mocha和chaihttp为我的node.js REST API设置单元测试,但我应该通过的样本测试似乎失败了。

我的单元测试代码在这里:

var express = require('express');
var router = express.Router();

var chai = require("chai");
var chaiHttp = require('chai-http');
chai.use(chaiHttp);

describe("Test", function() {
    it('Simple test', function(done) {
        chai.request('http://localhost:3000/')
            .get('/')
            .end(function(err, res) {
                chai.expect(res).to.have.status(200);
                done();
            });
    });
});

运行测试时出现的错误:

  1) Test Simple test:
     Uncaught AssertionError: expected { Object (domain, _events, ...) } to have status code 200 but got 404
      at tests.js:13:42
      at Test.Request.callback (/Users/laptop/Desktop/Toptal/node_modules/superagent/lib/node/index.js:631:3)
      at IncomingMessage.<anonymous> (/Users/laptop/Desktop/Toptal/node_modules/superagent/lib/node/index.js:795:18)
      at endReadableNT (_stream_readable.js:974:12)
      at _combinedTickCallback (internal/process/next_tick.js:74:11)
      at process._tickCallback (internal/process/next_tick.js:98:9)

从它的外观来看,它无法连接到我的本地主机或其他东西,因为我收到了404错误,而如果我在浏览器中手动转到localhost:3000,我就是这样。 m提供了一个简单的Hello world索引页。

这是我的index.js路线,如果它可能是相关的:

var express = require('express');

var router = express.Router();

router.get('/', function(req, res, next) {
    res.status(200).render('index.ejs');
});

module.exports = router;

1 个答案:

答案 0 :(得分:2)

要做的微小调整是确保您的请求是针对基本URL的,而不是基本URL,末尾有斜杠。 chai-http文档的示例如下:

chai.request('http://localhost:8080')
  .get('/')

此处发布的代码包含:

chai.request('http://localhost:3000/') /* Includes the resource `/` */
            .get('/')

尝试将其调整为:

chai.request('http://localhost:3000') /* Just the base URL */
            .get('/')

对于调试,您还可以尝试添加一些其他端点,看看它们是否正常工作。