1

我正在使用 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);
  });
});

register和函数都login正常工作,多个之前也按预期的定义顺序执行,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按预期记录。有点奇怪。希望有人可以帮助我,谢谢。

4

1 回答 1

0

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

于 2013-08-19T13:04:17.207 回答