未定义的返回值我试图了解如何使用作为新的HttpClientModule
的一部分提供的嘲笑功能。我的测试代码几乎完全符合现有文档中显示的内容。然而,DOC例子是不完整的 - 例如,至少为TestBad
和inject
import语句丢失。我假定是相同的HttpClient
真从@角/普通/ HTTP。我的测试代码添加了这些。单元测试在Angular 4.3中的HttpClientModule:从HttpTestingController.expectOne(url)
该测试失败,如req
最终的httpMock.expectOne
呼叫后被未定义。我会很感激所有可能的洞察。
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'将是不确定的。这里并不重要,大多只是我的习惯。 –