Модульный тест завершается неудачно с NullInjectorError в Angular - PullRequest
1 голос
/ 20 марта 2019

Я новичок в Angular и мне чего-то не хватает, когда дело доходит до понимания того, как работает DI.В настоящее время я пытаюсь пройти модульный тест.

Вот код теста;

import { TestBed } from '@angular/core/testing';
import { HttpClientModule, HttpClient } from '@angular/common/http'
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { InjectionToken } from '@angular/core';
import { UserService } from './user.service';

export const BASE_URL = new InjectionToken<string>('BASE_URL');

describe('UserService', () => {
  beforeEach(() => TestBed.configureTestingModule({
    imports: [
      HttpClientTestingModule,
    ],
    providers: [
      { provide: BASE_URL, useValue: 'http://localhost' },
      UserService,
      HttpClient
    ]
  }));

  it('should be created', () => {
    const service: UserService = TestBed.get(UserService);
    expect(service).toBeTruthy();
  });
});

Вот код теста;

import { Injectable, Inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';

import { User } from '@/_models';

@Injectable({ providedIn: 'root' })
export class UserService {

  private baseUrl: string

  constructor(private http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
    this.baseUrl = baseUrl
  }

  getAll() {
    return this.http.get<User[]>(`${this.baseUrl}/users`);
  }

  getById(id: number) {
    return this.http.get(`${this.baseUrl}/users/${id}`);
  }

  register(user: User) {
    return this.http.post(`${this.baseUrl}/users/register`, user);
  }

  update(user: User) {
    return this.http.put(`${this.baseUrl}/users/${user.id}`, user);
  }

  delete(id: number) {
    return this.http.delete(`${this.baseUrl}/users/${id}`);
  }
}

Это моя ошибка;

Ошибка: StaticInjectorError (DynamicTestModule) [BASE_URL]:
StaticInjectorError (Платформа: ядро) [BASE_URL]: NullInjectorError: Нет поставщика для BASE_URL!

Почему я получаю эту ошибку и что мне нужно сделать, чтобы исправить ее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...