@zlodiak

Как учесть наличие httpClient в юнит-тесте?

Я написал юнит-тест для такого сервиса:

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class CounterService {
  count: number = 0;

  constructor() {}

  getCounter() {
    return this.count;
  }
}


Вот юнит-тест:

import { TestBed } from '@angular/core/testing';
import { CounterService } from './counter.service';

describe('CounterService', () => {
  let service: CounterService;

  beforeEach(() => {
    TestBed.configureTestingModule({ });
    service = TestBed.inject(CounterService);
  });

  it('should be created', () => {
    expect(service).toBeTruthy();
  });

  it('should be equal 0 after init', () => {
    expect(service.getCounter()).toBe(0);
  });
});


С этим тестом всё ок, он отрабатывает успешно.

Но ошибка появляется когда я пытаюсь в сервис добавить httpClient:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class CounterService {
  count: number = 0;

  constructor(private http: HttpClient) {}

  getCounter() {
    return this.count;
  }
}


import { TestBed } from '@angular/core/testing';

import { CounterService } from './counter.service';

describe('CounterService', () => {
  let service: CounterService;

  beforeEach(() => {
    TestBed.configureTestingModule({ providers: [CounterService] });
    service = TestBed.inject(CounterService);
  });

  it('should be created', () => {
    expect(service).toBeTruthy();
  });

  it('should be equal 0 after init', () => {
    expect(service.getCounter()).toBe(0);
  });
});


В этом случае тесты не завершаются успешно, выводится следующая ошибка:
CounterService > should be created 
NullInjectorError: R3InjectorError(DynamicTestModule)[CounterService -> HttpClient -> HttpClient]: 
NullInjectorError: No provider for HttpClient!


Помогите пожалуйста исправить юнит-тест
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы