尝试使用chai-http测试nodejs express4 route时没有响应

时间:2017-06-13 15:04:12

标签: node.js typescript chai chai-http

我尝试运行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,请确保它已解决。

1 个答案:

答案 0 :(得分:1)

/book不会向客户发回任何回复。这就是你的测试用例超时的原因。

res.status(200)仅将http响应代码设置为200,但不发送 任何回应。您可以尝试resp.sendStatus(200)