新しいHttpClientModule
の一部として提供される模擬機能を使用する方法を理解しようとしています。私のテストコードは、既存のドキュメントに表示されているものとほとんど同じです。ただし、docの例は完全ではありません。たとえば、少なくともTestBad
とinject
のimport文が欠けています。私は同じことが@ angle/common/httpからHttpClient
に当たると仮定します。私のテストコードはこれらを追加します。ユニットテストHttpClientModule in Angular 4.3:HttpTestingController.expectOne(URL)からの未定義戻り値
呼び出し後にreq
が未定義になるため、このテストは失敗します。私はそれがなぜ起こっているのかについての洞察に感謝します。
import { TestBed, inject } from '@angular/core/testing';
import { HttpClient } from '@angular/common/http';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
describe('HttpClientTestingModule',() => {
beforeEach(() => TestBed.configureTestingModule({
imports: [ HttpClientTestingModule ],
providers: [ HttpClient, HttpTestingController]
}));
it('expects a GET request', inject([HttpClient, HttpTestingController], (http: HttpClient, httpMock: HttpTestingController) => {
http
.get('/data')
.subscribe(data => expect(data['name']).toEqual('Test Data'));
const req = httpMock.expectOne('/data');
expect(req).toBeDefined();
expect(req.request.method).toEqual('GET');
req.flush({name: 'Test Data'});
httpMock.verify();
}));
});
@MathijsSegers、 'httpMock.expectOne'への呼び出しが何とか失敗すると、' req'は未定義になります。それはここでは重要ではない、ほとんど私の部分に慣れている。 –