nullinjectorerror httpclientmodule headers for example common angular unit-testing typescript angular5

httpclientmodule - El servicio Angular 5 no puede pasar las pruebas unitarias con(NullInjectorError: ¡No hay proveedor para HttpClient!)



httpclient angular 6 (2)

Me enfrentaba a "NullInjectorError: No hay proveedor para HttpClient!" problema. Después de aplicar todas las opciones disponibles sugeridas en línea, ninguna funcionó para mis pruebas de unidad angular.

Por fin, solo agregando la siguiente pieza en mi archivo .service.spec.ts se solucionó el problema.

imports: [ HttpClientModule, ],

Sigo recibiendo los siguientes errores al ejecutar pruebas unitarias

Error: StaticInjectorError(DynamicTestModule)[ApiService -> HttpClient]: StaticInjectorError(Platform: core)[ApiService -> HttpClient]: NullInjectorError: No provider for HttpClient!

api.service.ts

import { Injectable } from ''@angular/core''; import { HttpClient } from ''@angular/common/http''; @Injectable() export class ApiService { constructor(private http: HttpClient) { } url = ''./assets/data.json''; get() { return this.http.get(this.url); } }

api.service.spec.ts

import { TestBed, inject } from ''@angular/core/testing''; import { HttpClientTestingModule, HttpTestingController } from ''@angular/common/http/testing''; import { ApiService } from ''./api.service''; describe(''ApiService'', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [ HttpClientTestingModule, ], providers: [ ApiService, ], }); }); it(''should get users'', inject([HttpTestingController, ApiService], (httpMock: HttpTestingController, apiService: ApiService) => { expect(apiService).toBeTruthy(); } ) ); });

No entiendo qué es lo que no funciona, ya que he incluido HttpClient en api.service.ts, el servicio funciona en el navegador.

Esto se llama directamente en un componente llamado MapComponent, y se llama dentro de HomeComponent.

Chrome 63.0.3239 (Mac OS X 10.13.3) HomeComponent expect opened to be false FAILED Error: StaticInjectorError(DynamicTestModule)[ApiService -> HttpClient]: StaticInjectorError(Platform: core)[ApiService -> HttpClient]: NullInjectorError: No provider for HttpClient!


Trate de envolver su inject en un async , como a continuación:

import { TestBed, async, inject } from ''@angular/core/testing''; import { HttpClientTestingModule, HttpTestingController } from ''@angular/common/http/testing''; import { ApiService } from ''./api.service''; describe(''ApiService'', () => { beforeEach(() => { ... }); it(`should create`, async(inject([HttpTestingController, ApiService], (httpClient: HttpTestingController, apiService: ApiService) => { expect(apiService).toBeTruthy(); }))); });

No se olvide de importar async desde @angular/core/testing .

He tenido un gran éxito con esto. Es el único diferente de tus pruebas de unidad y el mío donde uso HttpClientTestingModule .