Я новичок в 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!
Почему я получаю эту ошибку и что мне нужно сделать, чтобы исправить ее?