我试图了解如何使用作为新HttpClientModule的一部分提供的模拟功能.我的测试代码几乎完全匹配现有文档中显示的内容.但是,doc示例并不完整 – 例如,至少缺少TestBad和inject的import语句.我假设来自@ angular / common / http的HttpClient也是如此.我的测试代码添加了这些.
此测试失败,因为在httpMock.expectOne调用之后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(); })); });