[英]How to test a method returning a Promise
我正在編寫一個Angular 2 RC5應用程序,並使用Karma和Jasmine進行單元測試。
我有一個返回Promise<Foo>
(它在對angular的http.post的調用之上) 我希望在完成之后運行一些斷言。
像這樣的東西不起作用
let result = myService.getFoo();
result.then(rslt => expect(1+1).toBe(3)); // the error is lost
這會產生“未處理的承諾拒絕”警告,但錯誤會被抑制並且測試通過。 如何根據我已解決的承諾運行斷言?
筆記:
$rootScope.$digest();
代碼$rootScope.$digest();
。 我不確定這類東西的打字稿等價物是什么。 似乎沒有辦法說:“我有一個承諾,我會在這里等到我有同步結果”。 測試看起來應該是這樣的:
it('should getFoo', function (done) {
let result = myService.getFoo();
result
.then(rslt => expect(rslt).toBe('foo'))
.then(done);
});
使用done
回調有效,但您也應該能夠這樣做:
(注意return
)
it('should getFoo', function () {
let result = myService.getFoo();
return result
.then(rslt => expect(rslt).toBe('foo'))
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.