Chai的单元测试
问题描述:
我使用chai进行了以下单元测试,但即使我更改了端点,单元测试也通过了。我不知道这怎么可能?Chai的单元测试
var chai = require('chai');
var chaiHttp = require('chai-http');
var mongoose = require('mongoose');
var server = require('./index.js');
var should = chai.should();
chai.use(chaiHttp);
var agent = chai.request.agent(server.app);
var Cookies;
describe('integration tests for server component', function() {
before(function (done) {
//mongoose.createConnection('mongodb://someserver');
chai.request(server.app)
.post('/user/login')
.send({email:'[email protected]'})
.end(function(err, res){
res.should.have.status(200);
Cookies = res.headers['set-cookie'].pop().split(';')[0];
});
done();
});
it('should GET /user/loggedin with status 200', function(done) {
chai.request(server.app)
.get('/user/loggedin')
.end(function(err, res){
res.should.have.status(200);
});
done();
});
it('should POST /user/isregistered with status 200', function(done) {
var user = {
email: '[email protected]'
};
chai.request(server.app)
.post('/user/isregistered')
.send(user)
.end(function(err, res){
res.should.have.status(200);
});
done();
});
it('should GET /allskills', function(done){
chai.request(server.app)
.get('/user/allskills')
.end(function(err, res){
err.to.be.null;
res.to.have.status(200);
res.should.be.json;
res.body[0].to.have.property('_id');
res.body[0].to.have.property('name');
});
done();
});
这是用柴做单元测试的正确方法吗?
以前的目的是建立一个会议。不过,我想我应该直接在其内部创建一个会话不作任何调用/user/login
答
由于@robertklep指出的那样,你应该做的期望后给予end()
回调中调用done()
。
由于异步请求的性质,在响应进入之前调用了done()
。确保在满足请求时您的期望立即呼叫done()
。
您需要在传递给'end'的回调中调用'done',否则您会过早地告诉Mocha测试已经完成。 – robertklep
oooooooooooooooohhhhhhh谢谢。 – user3450754