2017-12-12 17 views
0

私は成功したパスをテストすることができ、テストスペックを持っている角度のHttpClient HttpTestingController 5テストエラーパス

public get(uri: string, params?: HttpParams): Observable<Object> { 
    return params ? this._http.get(uri, { params: params }) : this._http.get(uri) 
     .catch((error: HttpErrorResponse) => this.catchHttpError(error)); 
    } 

    private catchHttpError(error: HttpErrorResponse) : Observable<Object> { 
    this._logger.error(`error occurred: ${error.message}`); 
    throw(error); 
    } 

を次のようにHTTPリクエストを取得しますサービスを提供しています。どうすればいいですか:

  1. catchHttpError関数が呼び出されるようにエラーにHttpTestingControllerを取得しますか?

  2. _httpService.getがcatchHttpError関数からエラーを返すことをテストしますか?

私のテストでは、これまでのようになります。

この一緒に行くことになった
it('should make a get request and catch error', async(inject([HttpService, HttpTestingController], (_httpService: HttpService, backend: HttpTestingController) => { 
    spyOn(_httpService, 'get').and.callThrough(); 
    let actualObjects: Object[] = []; 
    _httpService.get('/api/dummy/get/uri').subscribe((objects: Object[]) => { 
    actualObjects = objects; 
    }); 

    backend.expectOne('/api/dummy/get/uri').flush(expectedObjects); 
    expect(_httpService.get).toHaveBeenCalledTimes(1); 
    expect(_httpService.get).toHaveBeenCalledWith('/api/dummy/get/uri'); 

    expect(actualObjects).toEqual(expectedObjects); 
    expect(actualObjects.length).toBe(1); 
    //expect(_httpService.get).toThrow(); 
}))); 

答えて

0

it('should make a get request and catch error', async(inject([HttpService, HttpTestingController], (_httpService: HttpService, backend: HttpTestingController) => { 
    spyOn(_httpService, 'get').and.callThrough(); 
    let actualObjects: Object[] = []; 
    _httpService.get('/api/dummy/get/uri').subscribe(null, (response: HttpErrorResponse) => { 
    expect(response.message).toBe('Http failure response for /api/dummy/get/uri: 500 Server Error'); 
    }); 

    backend.expectOne('/api/dummy/get/uri').flush(expectedObjects, { status: 500, statusText: 'Server Error' }); 
    expect(_httpService.get).toHaveBeenCalledTimes(1); 
    expect(_httpService.get).toHaveBeenCalledWith('/api/dummy/get/uri'); 

    expect(actualObjects).toBeNull(); 
}))); 
関連する問題