下面是我用mocha,chai和supertest写的代码。关于下面的代码段,我有一个问题,重点是令牌。
describe('Authenticated userTest', function () {
var token;
before(function loginAuth(done) {
request(app)
.post("/login/local")
.send("username=testName")
.send("password=qwe123QWE")
.expect(function (res) {
should.exist(res.body.token);
token = res.body.token;
})
.end(done);
});
it('should give me a defined token', function(done) {
console.log("token is " + token);
done();
});
});
显然,令牌在这里定义得很好。但是,当我删除done函数时,如下所示:
describe('Authenticated userTest', function () {
var token;
before(function loginAuth() { //done is removed here
request(app)
.post("/login/local")
.send("username=testName")
.send("password=qwe123QWE")
.expect(function (res) {
should.exist(res.body.token);
token = res.body.token;
})
.end(); //done is removed here
});
it('should give me a defined token', function(done) {
console.log("token is " + token);
done();
});
});
令牌变得未定义。根据我的理解,done是一个从before钩子传递到之后的所有各种测试的函数,它从内置源代码的it(...)
开始。
因此,我想澄清一下这个特定问题(如果只在测试中传递完成;如果完成只接受err参数),为什么在删除done参数后该标记变为未定义?
谢谢。
答案 0 :(得分:1)
Token没有变得未定义......在您尝试使用它时,仍然未定义。 token
尚未设置,因为mocha不知道它正在使用异步测试。