Javascript Can';在Mocha的功能之前,您无法登录代理

Javascript Can';在Mocha的功能之前,您无法登录代理,javascript,mocha.js,supertest,superagent,Javascript,Mocha.js,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) {

我正在用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
然后请求。但是在第三次
之前
/verify
总是说
代理
没有登录

如果我将代码更改为:

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

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

mocha似乎确实按照定义的顺序执行before(),正如TJ在这里所说:我也在代码中进行了测试,这是真的。