Я играю со своим очень простым приложением Angular, и я хотел бы знать, почему я получаю исключение "нет поставщика для HttpClient"? Хорошо, я избавился от этого исключения, импортировав HttpClientTestingModule в мой app.component.test.ts, но я не совсем уверен, зачем это нужно. Мой app.component.html выглядит так:
<app-http-client></app-http-client>
И это все. (Да, у меня есть HttpClientComponent в моем приложении. Немного смущает, но это нормально для меня). Я издевался над этим компонентом в таких тестах:
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent,
MockHttpClientComponent
],
imports: [
HttpClientTestingModule
]
}).compileComponents();
}));
@Component({
selector: 'app-http-client',
template: ''
})
class MockHttpClientComponent {
}
, поэтому не важно, что содержит app-html-client.
HttpClient также не используется в файле app.component.ts:
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
title = 'http-client';
constructor(private bookService: BookService) {
}
ngOnInit() {
this.bookService.initDb();
}
HttpClient используется в BookService для получения книг из моей фиктивной базы данных H2, связанной с внутренним приложением SpringBoot, но тесты не хотят, чтобы я импортировал или предоставлял BookService или любой другой модуль или службу, импортированные или предоставленные в app.module.ts. Но они хотят это в случае HttpClient.
Так почему я должен импортировать HttpClientTestingModule в файл app.component.spec.ts моего приложения?