我想測試我的Angular2組件中的錯誤處理,因此想模擬一個服務來返回一個Observable.throw('錯誤')。如何使用Jasmine和Karma和Angular 2來完成?如何在Angular2測試中模擬Observable.throw?
3
A
回答
5
您應該可以看到create
,並且只需撥打觀察員error
即可。例如,
let mockService = {
error: false,
data: 'something',
getData:() => {
return Observable.create(observer => {
if (this.error) {
observer.error(new Error(..))
} else {
observer.next(this.data);
}
observer.complete();
})
}
}
現在對於您的測試,您可以使用模擬成功案例和錯誤案例。對於錯誤情況,只需將error
屬性設置爲true即可。在成功的情況下,next
與數據一起被調用。
當您訂閱可觀察到的,你可以在調用observer.next
,observer.error
,observer.complete
當過三回呼,success
,error
,並complete
service.getData().subscribe(
(data) => {} // sucess
(error) => {} // error
() => {} // complete
)
與
observer
所以,相應的回調將被調用。
+0
我對這個有點麻煩。它是否在測試聲明中,即「我」將屬性設置爲「true」?當我將屬性設置爲「true」時,在我設置的測試聲明中沒有找到更改。如果這有幫助,我可以將我的代碼放在一個plnkr中。 – bmd
0
你可以簡單地模擬像Observable.throw({status:404})這樣的Observable throw錯誤對象,並測試observable的錯誤塊。
const xService = fixture.debugElement.injector.get(SomeService);
const mockCall = spyOn(xService, 'method')
.and.returnValue(Observable.throw({status: 404}));
相關問題
- 1. 模擬ngrx /存儲在Angular2測試
- 2. 如何在測試angular2組件時模擬可觀察的流?
- 3. AsyncTestCompleter Browserify Angular2 HTTP模擬測試
- 4. 如何在angularjs測試中模擬$ location.host()?
- 5. 如何在測試中模擬NavParams?
- 6. 如何在模擬器中測試Branch.io?
- 7. 如何模擬在Haskell中測試?
- 8. 如何在GWT測試中模擬
- 9. 在單元測試期間在angular2中模擬定製服務
- 10. 如何測試Angular2 /打字稿的HTTPService沒有模擬
- 11. 如何爲angular2測試模擬http錯誤
- 12. 模擬在測試中
- 13. 如何在angular2中模擬一個activatedRoute父路由用於測試目的?
- 14. 如何在angular2中模擬http.get
- 15. 測試:模擬模擬
- 16. 如何模擬測試中的失敗
- 17. 如何測試MFMailComposeViewController在模擬器
- 18. applicationWillResignActive如何在iPhone模擬器測試
- 19. 如何在Angular2中測試transclusion(ng-content)?
- 20. 模擬CompletionException在測試
- 21. 如何測試Angular2的router.navigate?
- 22. 如何在angularjs中測試指令時模擬模糊?
- 23. 如何在模型測試用例中創建模擬
- 24. 如何模擬angular2中的@Input()對象?
- 25. C#模擬測試
- 26. 在Grails中,我如何在單元測試中模擬GrailsDomainBinder?
- 27. 如何爲android instrumentation測試模擬sharedpreferences?
- 28. 如何單元測試/模擬requests.get(URL)
- 29. 如何使用模擬測試事件
- 30. 我該如何模擬`instanceof`測試?
您能否給我們提供一個代碼示例?爲您的問題添加上下文,讓我們提供準確的答案。 – Supamiu