Angular 5 service failing to pass unit tests with (NullInjectorError: No provider for...

Discussão em 'Angular' iniciado por user6885115, Fevereiro 6, 2025.

  1. user6885115

    user6885115 Guest

    I keep getting the following errors when running unit tests

    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();
    }
    )
    );
    });


    I don't understand what is going wrong as I have included HttpClient into api.service.ts, the service works in the browser.

    This is directly called in a component called MapComponent, and that is called inside 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!

    Continue reading...

Compartilhe esta Página