我尝试运行nodejs express4路由测试并且无法获得响应,如果尝试运行app并执行本机(POstMan)测试 - 像sharm一样工作。
APP.ts
import express = require('express');
import expressValidator = require('express-validator');
import bodyParser = require('body-parser');
let app = express();
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.use(expressValidator())
app.get("/", (req, res) => res.status(200).send({message: "Hello"}));
app.route("/book")
.get((req,res)=>{console.log(req.path);return res.status(200)})
.post((req,res)=>{return res.status(
//Run
app.listen(3000, function() {
console.log('Listening on port '+ 3000)
})
export = app;
test.ts
import chai = require('chai');
import chaiHttp = require('chai-http');
import mocha = require('mocha');
let server = require('../dist/app');
let expect = chai.expect;
chai.use(chaiHttp);
describe('/GET', () => {
it('it should not GET a book without pages field', (done) => {
chai.request(server)
.get('/book')
.end(function(err, res) {
expect(res).to.have.status(200);
done(); // <= Call done to signal callback end
});
});
});
结果我收到错误
错误:超出2000毫秒超时。对于异步测试和挂钩,请确保 “完成()”被称为;如果返回Promise,请确保它已解决。
答案 0 :(得分:1)
/book
不会向客户发回任何回复。这就是你的测试用例超时的原因。
res.status(200)
仅将http响应代码设置为200,但不发送
任何回应。您可以尝试resp.sendStatus(200)
。