Я импортирую и использую HttpClient
в службе следующим образом:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root',
})
export class MyService {
constructor(private http: HttpClient) { }
getData() {
return this.http.get("url...");
}
}
Однако когда я запускаю ng test
для своих модульных тестов и когда эти тесты используют службу, я получаю сообщение об ошибке:
Error: StaticInjectorError(DynamicTestModule)[HttpClient]:
StaticInjectorError(Platform: core)[HttpClient]:
NullInjectorError: No provider for HttpClient!
В документации Angular 6 по HTTP просто сказано делать то, что я сделал. выше.
HttpClientModule
в свой тест. Ваши тесты создают свои собственные модули. Если вы не импортируетеHttpClientModule
(илиHttpClientTestingModule
) туда,HttpClient
не будет работать, потому что Angular об этом не знает. Неважно, что вы добавилиHttpClientModule
, скажем, кAppModule
. Это должно быть вTestBed.configureTestingModule
. Можно также импортироватьSharedModule
, если он у вас есть, покаHttpClientModule
находится вexports
. Но тест будет медленнее, потому чтоSharedModule
будет содержать ненужный материал - person Kevin Doyon   schedule 13.12.2018HttpClientTestingModule
. - person Kingamere   schedule 13.12.2018