Я пытаюсь протестировать службу, использующую HttpClient, у меня есть это:

export class LoginService {
  constructor(
    private http: HttpClient,
    private config: AppConfig,
    private auth: AuthService
  ) {}

Итак, в .spec:

describe('LoginService', () => {
  let service;
  let httpClient: HttpClient;
  let httpTestingController: HttpTestingController;
  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [HttpClientTestingModule],
      providers: [LoginService, AuthService, AppConfig]
    });
    httpClient = TestBed.inject(HttpClient);
    httpTestingController = TestBed.inject(HttpTestingController);
    service = TestBed.get(LoginService);
  });

Но он не работает, потому что я не могу импортировать Inject, появляется эта ошибка: Свойство 'inject' не существует для типа 'TestBedStatic', как я могу импортировать инъекцию? и, другой вопрос, нормально ли настраивать тест?

1
Juan 17 Июл 2020 в 16:31

1 ответ

Лучший ответ

TestBed.inject был введен в Angular 9, в Angular 7 вы должны использовать TestBed.get. Вы можете проверить это в документации.

По поводу тестовой конфигурации: выглядит нормально. В общем, рекомендуется добавлять:

afterEach(() => {
  httpTestingController.verify();
});

При использовании HttpTestingController

0
Andrew Shustariov 17 Июл 2020 в 13:48