2017-03-02 9 views
0

私はチャイで次のユニットテストを行っていますが、ユニットテストに合格してもエンドポイントを変更しても問題ありません。これはどうやって可能かわからない?チャイによるユニットテスト

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

    }); 

これはチャイとの単体テストを行う正しい方法ですか?

前の目的は、セッションを整えることです。しかし、私は、私は@robertklepが指摘したように、あなたが期待を行った後end()に与えられたコールバック内done()を呼び出す必要があります/user/login

+3

'end'に渡されたコールバックの中で' done'を呼び出す必要があります。さもなければ、テストが完了したことをモーチャに早めに伝えています。 – robertklep

+0

よろしくお願いします。 – user3450754

答えて

0

に任意の電話をかけることなく、その中に直接セッションを作成するべきだと思います。

応答が入る前に、非同期要求の性質のためにdone()が呼び出されていました。要求が満たされたときに期待した後、必ずdone()を呼び出してください。

関連する問題