Угловое модульное тестирование параметров впрыскивания - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь настроить модульные тесты, используя инжект.Но я не уверен, как установить параметры.

Конструктор для тестируемого класса (auth.service.ts):

constructor(private http : HttpClient, private token: TokenStorage) {}

Класс модульного теста (auth.service.spec.ts)

import { TestBed, inject } from '@angular/core/testing';
import { AuthService } from './auth.service';
import { HttpClient, HttpHandler, HttpClientModule } from '@angular/common/http';
import { TokenStorage } from './token.storage';

describe('AuthService', () => {
    beforeEach(() => {
        TestBed.configureTestingModule({
            providers: [AuthService, HttpClient, HttpHandler, HttpClientModule, TokenStorage]
        });
    });
    it('should be created', inject([AuthService], (service: AuthService) => {
        expect(service).toBeTruthy();
    }));
});

1 Ответ

0 голосов
/ 26 апреля 2019
  1. Вам необходимо использовать HttpClientTestingModule для проверки использования HttpClient в вашем сервисе.
  2. Использовать поддельное значение для TokenStorage, иначе ваш модульный тест станет интеграционным тестом.

См. Также angular - Услуги тестирования с TestBed

import { TestBed, inject, getTestBed } from '@angular/core/testing';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { AuthService } from './auth.service';
import { TokenStorage } from './token.storage';

describe('AuthService', () => {
  let injector: TestBed;
  let service: AuthService;
  let httpMock: HttpTestingController;

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [HttpClientTestingModule],
      providers: [
        AuthService,
        { provide: TokenStorage, useValue: {} }
      ]
    });
    injector = getTestBed();
    service = injector.get(AuthService);
    httpMock = injector.get(HttpTestingController);
  });

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

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