在Mocha中的函数之前无法获取登录代理

时间:2013-08-19 09:58:29

标签: javascript mocha supertest superagent

我正在使用mocha测试登录过程,这是我的示例测试用例

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按预期记录。有点奇怪。希望有人可以帮助我,谢谢。

1 个答案:

答案 0 :(得分:0)

mocha不保证您之前设置的函数的执行顺序()。要做到这一点,您应该将所有操作作为函数放在同一个代理程序调用中,或者(更有可能)使用async.series使您的之前的函数按照您希望的顺序完成。