Recentemente ho riscontrato un problema che non riesco a spiegare. Ho un sacco di codice in questi test così ho intenzione di fare del mio meglio per catturare l'idea quiMoca prima della partita prima dell'esecuzione
ho le prove che sembrano:
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
});
});
});
Il problema è che il beforeeach da #1
funziona benissimo . Posso vederlo accadere sul DB e sui test nel passaggio #2
.
Tuttavia, i test nel contesto delle preferenze su #4
non riescono perché non è possibile trovare l'utente per accedere a #3
.
Sembra che il contesto before
venga eseguito prima della descrizione beforeEach
, che causa il loro errore. Se si sposta logUserIn
nel blocco it
, funziona correttamente.
Cosa potrebbe causare questo?
Impossibile spiegare perché * "Sembra che il contesto prima sia eseguito prima della descrizione di Before" *, ma non dovresti eseguire 'done' ad un certo punto prima? –
Prima è prima dell'intero blocco, prima di Each è prima di ogni test. –
@StevenScott Ecco perché allora. La descrizione prima di Ognuno viene eseguita dopo il contesto precedente. Vorrei che la documentazione rendesse più ovvio lo – Tomo