Javascript ChaiJS:不能导致测试失败

Javascript ChaiJS:不能导致测试失败,javascript,mocha.js,chai,Javascript,Mocha.js,Chai,我试图让我的第二个规范失败,但它不会。我正在从服务器返回一个状态码203,测试将其作为203接收,但由于某些原因,expect块仍然不会抛出错误。这是怎么回事 规格js app.js var express=需要“express”; var-app=express app.get('/pull', function (req, res) { res.send('works'); }); app.post('/push', function(req, res) { res.status(

我试图让我的第二个规范失败,但它不会。我正在从服务器返回一个状态码203,测试将其作为203接收,但由于某些原因,expect块仍然不会抛出错误。这是怎么回事

规格js

app.js var express=需要“express”; var-app=express

app.get('/pull', function (req, res) {
  res.send('works');
});

app.post('/push', function(req, res) {
  res.status(203);
  res.send('works');
});

var server = app.listen(3000, function () {

  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at port', host, port);

});
您需要将done传递到it块中,而不是描述


这很简单。传递给两个it调用的回调应该是函数完成{…而不是函数{…现在,Mocha认为这些测试是同步的,所以它不会等待它们完成

您传递来描述的回调采用done参数,但这是无用的

app.get('/pull', function (req, res) {
  res.send('works');
});

app.post('/push', function(req, res) {
  res.status(203);
  res.send('works');
});

var server = app.listen(3000, function () {

  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at port', host, port);

});
var chai = require('chai');
var expect = chai.expect;
var request = require('request');
var localServerUri = 'http://127.0.0.1:3000/';

describe('server http routing', function(){
  it('should receive a status code 200 after GET request', function(done) {
    request(localServerUri + 'pull', function (error, response, body) {
      expect(response.statusCode).to.be.at(200);
      done();
    });
  });

  it('should receive a status code 201 after POST request', function(done) {
    request.post({url:localServerUri + 'push', form: {key:'value'}}, function(err, response, body) { 
      expect(true).to.be.true;
      done();
    });
  });
});