2017-03-02 77 views
0

我使用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

+3

您需要在传递给'end'的回调中调用'done',否则您会过早地告诉Mocha测试已经完成。 – robertklep

+0

oooooooooooooooohhhhhhh谢谢。 – user3450754

回答

0

由于@robertklep指出的那样,你应该做的期望后给予end()回调中调用done()

由于异步请求的性质,在响应进入之前调用了done()。确保在满足请求时您的期望立即呼叫done()