2017-05-10 56 views
0

我使用chaichai-as-promised來測試一些異步JS代碼。使用或不使用通知方法調用chai-as-promised有什麼區別?

我只是想檢查一個函數返回一個承諾最終會返回一個數組,並寫了2個以下測試:

一個

it('should return an array',() => { 
    foo.bar().should.eventually.to.be.a('array') 
}) 

it('should return an array', (done) => { 
    foo.bar().should.eventually.to.be.a('array').notify(done) 
}) 

兩者都通過了,但只有B選項實際上運行包含在我的bar()函數中的完整代碼(即,顯示下面的代碼中的console.log()消息)。難道我做錯了什麼?爲什麼?

bar() { 
    return myPromise() 
    .then((result) => { 
     console.log('Doing stuff') 
     return result.body.Data 
    }) 
    .catch((e) => { 
     console.err(e) 
    }) 
    } 
+0

,還有第三種選擇: 對於摩卡和實習生,你必須從你的測試方法返回的承諾'它(... ()=> {return foo.bar()。should.eventually ...})'(因爲'finally'返回一個promise,當一個測試用例返回一個promise時,Mocha會正確處理它,而不需要回調) – robertklep

回答

1

你使用什麼測試庫? Mocha,實習生還是其他?如果您使用摩卡(或其他測試框架,它支持的承諾)

it('should return an array',() => { 
    return foo.bar().should.eventually.to.be.a('array'); 
}) 
0

測試承諾意味着您正在測試異步代碼。通知和完成回調會設置一個計時器並等待承諾鏈完成執行。

第二種方法是正確的,因爲您可能需要測試鏈接的承諾。

看看tutorial這讓我進入異步單元測試。

相關問題