Angular Модульные тесты NullInjectorError: Нет провайдера для HttpClient! ошибка - PullRequest
1 голос
/ 08 мая 2020

Я знаю, что этот вопрос задавали снова и снова. Мне не удалось найти работающее решение. В настоящее время я добавляю модульные тесты в наш проект и, таким образом, исправляю все автоматически сгенерированные.

Но при запуске 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, но, поскольку мне там не повезло, я снова задаю этот вопрос.

Заранее спасибо

1 Ответ

0 голосов
/ 08 мая 2020

Попробуйте добавить HttpClientModule к провайдерам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...