Ниже приведен код, который я написал с помощью 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(...)
из встроенного исходного кода.
Таким образом, я хочу прояснить этот конкретный вопрос (если done передается только через тесты; if done принимает только параметр err) и почему токен стал неопределенным после удаления параметра done?
Спасибо.