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