2013-08-19 57 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