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

我正在尝试使用mocha和chaihttp为我的node.js REST API设置unit testing,但是我应该通过的示例testing似乎失败了。

我的unit testing代码在这里:

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(); }); }); }); 

运行testing时出现的错误:

  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,我服务了一个简单的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; 

做一个小调整就是确保你的请求是针对基本的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('/') 

对于debugging,你也可以尝试添加一些其他的terminal,看看他们是否工作。