[英]Unit Testing in Jasmine: Spy on service function and call another service function
[英]While doing Unit testing with Jasmine should I mock or spy or stub my service which is injected in my component?
在我的 component.ts 中,服務已被注入到訂閱服務中的函數並接收信息的組件的構造函數中。 在這種情況下如何測試我的組件?
在 component.ts 我有以下代碼:-
在這種情況下我該如何繼續?
您要么必須模擬您的服務,這在單元測試方面總是一個好主意,要么使用下面解釋的間諜。
選項模擬:
...
providers: [
{provide: PartService, useClass: MockPartService},
],
...
class MockPartService {
list(): Observable<Part[]> {
return Observable.of([...]);
}
您必須使用與您在測試中調用的方法簽名相同的方法簽名來編寫 MockService。 您可能希望將您的預期返回值硬編碼到此 MockClass 中。 當您想要模擬例如 API 請求等時,這通常是您想要的,因此您的測試不會拋出。
選項間諜:
const mockParts: Part[] = [...]
const serviceSpy = spyOn(PartService, 'list').and.ReturnValue(Observable.of(mockParts));
當您希望服務為您的測試帶來特定回報時,請使用此選項。
您也可以在測試中自由混合。 存根spyOn(YourService, 'YourMethod').and.stub()
只會阻止調用實際方法,但不會返回任何值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.