2017-04-09 3 views
0

Ce code fait mes tests mocha passent sans erreur:Mocha avant la fonction - lambda sans erreurs accolades; lambda avec des accolades fonctionne

before(done => { 
    mockgoose 
    .prepareStorage() 
    .then(() => mongoose.connect('mongodb://example.com/TestingDB')) 
    .then(done) 
}) 

it('passes', done => done()) 

Mais enlever les accolades dans les causes bloc before l'erreur:

before(done => 
    mockgoose 
    .prepareStorage() 
    .then(() => mongoose.connect('mongodb://example.com/TestingDB')) 
    .then(done) 
) 

it('passes', done => done()) 

1) "before all" hook 

0 passing (2s) 
1 failing 

1) "before all" hook: 
    Error: Resolution method is overspecified. Specify a callback *or* return a Promise; not both. 
    at process._tickCallback (internal/process/next_tick.js:109:7) 

Est-ce que quelqu'un sait pourquoi? Si plus de contexte est nécessaire, je peux obliger.

Répondre

3

Il est dit ici, vous ne retourniez rien auparavant, vous utilisiez simplement done pour spécifier quand la tâche est terminée. Maintenant, vous retournez un Promise (le résultat de l'appel mockgoose je suppose) et il est confus moka.

+0

Ahhhh, oui. En utilisant le lambda sans accolades, il y a un retour implicite! Donc, pas d'accolades, je retournais un Promsie. Et en fournissant 'done', je spécifiais aussi un rappel. Je vais juste me débarrasser du «fait» et être sur ma voie joyeuse. Merci! Je suis nouveau dans cette scène Javascript :) – jrahhali