2015-04-02 109 views
0

我想讓我的第二個規範失敗,但它不會。我從我的服務器返回statusCode 203,並且測試將其作爲203收到,但由於某些原因,expect塊仍不會引發錯誤。這裏發生了什麼?ChaiJS:不能導致測試失敗

spec.js

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(done){ 
    it('should receive a status code 200 after GET request', function() { 
    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() { 
    request.post({url:localServerUri + 'push', form: {key:'value'}}, function(err, response, body) { 
     //why wont this fail? 
     console.log(response.statusCode === 201); 
     expect(response.statusCode === 201).to.be.true; 
     done(); 
    }); 
    }); 
}); 

app.js 變種快遞=要求( '表示'); 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); 

}); 

回答

0

你需要傳遞doneit塊,不describe

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

這很簡單。您撥給it電話的回撥應爲function (done) {...而不是function() {...。目前,摩卡認爲這些測試是同步的,所以它不會等待它們完成。

您傳遞給describe的回調需要done參數,但這沒用。

相關問題