Я знаю, что этот вопрос задавали снова и снова. Мне не удалось найти работающее решение. В настоящее время я добавляю модульные тесты в наш проект и, таким образом, исправляю все автоматически сгенерированные.
Но при запуске ng test я получаю следующую ошибку:
NullInjectorError: R3InjectorError(DynamicTestModule)[Service -> HttpClient -> HttpClient]:
NullInjectorError: No provider for HttpClient!
Обратите внимание на -> HttpClient -> HttpClient.
Когда я впервые увидел это, я подумал, что это проблема круговой зависимости. Это привело меня к созданию тестового модуля тестирования, который я импортирую в свой TestBed.
Вот образец теста, который не проходит.
import { TestBed } from '@angular/core/testing';
import { SearchListService } from './search-list.service';
import { ServiceTestingModule } from '@app/testing/service.testing.module';
import { ZhwKnowledgeJourneyService } from '@bkh/services/zhw-knowledge-journey.service';
describe('ZhwKnowledgeJourneyService', () => {
beforeEach(() => TestBed.configureTestingModule({
imports: [ServiceTestingModule],
providers: [SearchListService]
}));
it('should be created', () => {
const service: ZhwKnowledgeJourneyService = TestBed.inject(ZhwKnowledgeJourneyService);
expect(service).toBeTruthy();
});
});
А вот мой «ServiceTestingModule»
import { NgModule } from '@angular/core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { CommonModule } from '@angular/common';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
CommonModule,
HttpClientModule,
HttpClientTestingModule,
],
declarations: [],
providers: [],
exports: [HttpClientModule, HttpClientTestingModule]
})
export class ServiceTestingModule { }
Я также проверил, что «импорт» всегда стоит перед «поставщиками», но все равно не повезло.
И я также прочитал (и протестировал) все сообщения Github и Stackoverflow в этом топе c, но, поскольку мне там не повезло, я снова задаю этот вопрос.
Заранее спасибо