Недавно я столкнулся с проблемой, которую я не могу объяснить. У меня есть много кода в этих тестах, поэтому я сделаю все возможное, чтобы захватить идею здесь.
У меня есть тесты, которые выглядят так:
describe('main page', function(){
beforeEach(function(done){
addUserToMongoDb(done); // #1
});
afterEach(function(done){
removeUserFromMongoDb(done);
});
context('login', function(){
it('should log the user in, function(){
logUserIn(user_email); // #2 - This line requires the user from the beforeEach
});
});
context('preferences', function(){
before(function(done){ //#3
logUserInBeforeTest(user_email);
});
it('should show the preferences', function(){
doCheckPreferences(); // #4
});
});
});
Проблема заключается в том, что beforeEach by #1
работает нормально. Я вижу, что это происходит в БД и тесты в #2
pass.
Однако тесты в контексте предпочтений в #4
терпят неудачу, потому что он не может найти пользователя для входа в систему #3
.
Кажется, что контекст before
выполняется до описания beforeEach
, что приводит к сбою. Если я перемещаю logUserIn
в блок it
, он отлично работает.
Что может быть причиной этого?