12
A
回答
7
摩卡內置了承諾支持爲1.18.0版本(三月2014)。您可以返回從測試情況下的承諾,摩卡會等待它:
it('does something asynchronous', function() { // note: no `done` argument
return getSomePromise().then(function(value) {
expect(value).to.equal('foo');
});
});
不要忘記在第二行的return
關鍵字。如果您不小心忽略了它,Mocha會假設您的測試是同步的,並且不會等待.then
函數,所以即使斷言失敗時您的測試也會始終通過。
如果過於重複,你可能希望使用chai-as-promised庫,它給你一個eventually
性質更方便地測試承諾:
it('does something asynchronous', function() {
return expect(getSomePromise()).to.eventually.equal('foo');
});
it('fails asynchronously', function() {
return expect(getAnotherPromise()).to.be.rejectedWith(Error, /some message/);
});
再次,不要忘記return
關鍵字!
+0
對不起,我有一個簡單的測試'browser.url(..); title = browser.getTitle(); expect(title).to.equal('foo');'我會如何在我的情況下使用'getPromise()'? – Gobliins 2017-08-28 13:14:15
4
然後'返回'可用於處理錯誤的承諾。大多數庫支持稱爲done
的方法,這將確保引發任何未處理的錯誤。
it('does something asynchronous', function (done) {
getSomePromise()
.then(function (value) {
value.should.equal('foo')
})
.done(() => done(), done);
});
您也可以使用類似mocha-as-promised(還有其他的測試框架類似的庫)。在你的腳本開始
npm install mocha-as-promised
然後:如果你正在運行的服務器端
require("mocha-as-promised")();
如果你正在運行的客戶端:
<script src="mocha-as-promised.js"></script>
然後你的測試裏面你可以退貨的承諾:
it('does something asynchronous', function() {
return getSomePromise()
.then(function (value) {
value.should.equal('foo')
});
});
或者在咖啡腳本(按你原來的例子)
it 'does something asynchronous',() ->
getSomePromise().then (value) =>
value.should.equal 'foo'
相關問題
- 1. 摩卡測試承諾
- 2. 如何在摩卡中測試承諾
- 3. 承諾在摩卡單元測試
- 4. 使用摩卡在承諾鏈內測試角$ http
- 5. 使用摩卡測試承諾拒絕案例
- 6. 摩卡 - 測試承諾,`完成`永遠不會被調用在承諾
- 7. 用摩卡返回承諾的測試方法調用
- 8. AngularJS,摩卡,柴:有承諾
- 9. 承諾延遲摩卡
- 10. 測試失敗的承諾與摩卡的內置承諾支持
- 11. 使用sinon mocks設置摩卡測試,使用mysql和bluebird承諾
- 12. 摩卡測試:警告承諾沒有錯誤回調
- 13. 測試js承諾與摩卡,柴,chaiAsPromised和Sinon
- 14. Angularjs摩卡測試$ Q承諾沒有$ rootScope $申請
- 15. 摩卡/ Sinon - JavaScript中的單元測試承諾
- 16. 適當的錯誤承諾在摩卡測試
- 17. 摩卡 - 檢索承諾測試的結果
- 18. 摩卡和Sinon測試與承諾超時
- 19. 使用摩卡雲測試9,從node.js執行摩卡測試
- 20. 摩卡測試超時使用承諾和跳過代碼,爲什麼?
- 21. 摩卡和柴承諾超時
- 22. 嵌套承諾 - 摩卡 - 超時超時
- 23. 測試承諾
- 24. 如何測試採用摩卡
- 25. 用IcedCoffeeScript寫摩卡測試?
- 26. 用摩卡和柴測試
- 27. 用摩卡測試Node.js api
- 28. 用摩卡測試json.parse
- 29. 摩卡/ Sinon - 單元測試/ stubbing功能與ES6裏面的child_process.exec承諾
- 30. 摩卡測試承諾報告失敗,但需要控制-c取回控制
做一個函數,它接受'it'並返回一個你調用的函數,而不是它自動執行所有這些。你的測試函數需要以'return getSomePromise()' – 2013-02-25 01:43:14
開頭。「當這個斷言失敗時,它會被吞下」。爲了澄清,'value.should.equal'拋出的異常被調用「success」回調的函數捕獲。這是Promises/A +的一個特性,可以確保您始終可以處理承諾鏈末尾的「失敗」回調中的任何錯誤(異常或其他)。 – 2013-04-11 13:59:47