2017-04-09 40 views
0

此代碼讓我摩卡測試通過而不會出現錯誤:摩卡功能之前 - 沒有花括號錯誤的lambda;拉姆達用花括號工作

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

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

但在before塊移除花括號導致錯誤:

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) 

有誰知道爲什麼嗎?如果需要更多的上下文,我可以承擔責任。

回答

3

它是這麼說的就在那裏,你以前不返回任何東西,你只是使用done指定當任務完成。現在你回來了一個Promise(我假設的模仿電話的結果),它是混淆摩卡。

+0

Ahhhh,是的。通過使用沒有花括號的lambda,我有一個隱含的回報!所以,沒有大括號,我回來了一個Promsie。通過提供'done',我還指定了一個回調。我只是擺脫「完成」,並在我的快樂方式。謝謝!我是這個Javascript場景的新手:) – jrahhali