2017-04-09 6 views
0

Dieser Code passieren macht meine Mokka Tests ohne Fehler:Mocha vor Funktion - Lambda ohne geschweifte Klammern Fehler; Lambda mit geschweiften Klammern arbeitet

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

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

Aber im before Block die geschweiften Klammern zu entfernen verursacht den Fehler:

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) 

Wer weiß, warum? Wenn mehr Kontext benötigt wird, kann ich mich verpflichten.

Antwort

3

Es sagt, genau dort, Sie haben nichts zurück, Sie waren nur mit done, um anzugeben, wenn die Aufgabe erledigt ist. Jetzt gibst du eine Promise (das Ergebnis des Mockgoose-Aufrufs, den ich annehmen würde) zurück und es ist ein verwirrender Mokka.

+0

Ahhhh, ja. Indem ich das Lambda ohne geschweifte Klammern verwende, gibt es eine implizite Rückkehr! Also, ohne geschweifte Klammern, brachte ich eine Promsie zurück. Und indem ich 'done' lieferte, gab ich auch einen Rückruf an. Ich werde nur das "fertig" loswerden und auf meinem fröhlichen Weg sein. Vielen Dank! Ich bin neu in dieser Javascript-Szene :) – jrahhali

Verwandte Themen