我正在尝试使用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;
答案 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('/')
对于调试,您还可以尝试添加一些其他端点,看看它们是否正常工作。