2017-03-02 42 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()