2013-08-19 66 views
1

得到logined代理中函數之前我測試與摩卡的登錄過程,這是我的例子測試用例不能在摩卡

var request = require('supertest'); 
var app = require('../app'); 

describe('Example', function() { 
    var agent = request.agent(app); 

    before(register(user)); 
    before(login(agent, user)); 

    before(function(done) { 
    agent 
     .get('/verify') 
     .expect(200) 
     .end(done); 
    }); 
}); 

兩個registerlogin功能正常工作,多之前也是爲了執行的定義如預期,首先register然後login然後請求。但在第三before/verify總是說agent沒有登錄

如果我更改代碼,因爲這:

describe('Example', function() { 
    var agent = request.agent(app); 

    before(register(user)); 
    before(login(agent, user)); 

    it('should login as expected', function(done) { 
    agent 
     .get('/verify') 
     .expect(200) 
     .end(done); 
    }); 
}); 

,並記錄預期這次agent。有點奇怪。希望有人能幫助我,謝謝。

回答

0

摩卡並不保證您按照以前()所設置的功能的執行順序。要做到這一點,您應該將所有操作作爲功能關閉,或者(更可能)使用async.series將您的在前功能按您希望的順序完成。

+0

看起來mocha按照定義的先後順序執行,正如TJ在這裏所說:https://groups.google.com/d/msg/mochajs/kIHi4O_pWzA/-6vlO3V-MooJ 我也在我的代碼中測試過, 這是真的。 – hulufei