Я внедрил сервис в конструктор, используя ServiceLocator.injector. Когда я запускал модульные тесты, он отображает ошибку «Ошибка типа: невозможно прочитать« environmentWeb »из неопределенного». environmentWeb () - это метод службы, который я внедрил в конструктор.
Я попытался поместить Службу в провайдеров и попытался использовать TestBed.get (Служба) для внедрения Службы в тестовом примере, нонерабочий
ReportService.ts
export class ReportService extends ReportsCommonDataObject {
private dataLoaded: boolean = false;
protected http: HttpClient;
protected performanceService: PerformanceService;
protected performanceSecondLevelService: PerformanceSecondLevelService;
protected sharedService: SharedService;
protected utilService: UtilService;
constructor() {
super();
setTimeout(() => {
this.performanceService = ServiceLocator.injector.get<PerformanceService>(PerformanceService);
this.performanceSecondLevelService = ServiceLocator.injector.get<PerformanceSecondLevelService>(PerformanceSecondLevelService);
this.sharedService = ServiceLocator.injector.get<SharedService>(SharedService);
this.utilService = ServiceLocator.injector.get<UtilService>(UtilService);
this.http = ServiceLocator.injector.get<HttpClient>(HttpClient);
});
}
report.service.spec.ts:
describe('ReportService', () => {
let reportService: ReportService;
let httpTestingController: HttpTestingController;
let sharedService: SharedService;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
SharedService,
HttpClient,
ReportService,
PerformanceService,
PerformanceSecondLevelService,
MatDialog,
],
imports: [
AppModule,
BrowserModule,
HttpClientTestingModule
],
}).compileComponents()
// Inject the http service and test controller for each test
httpTestingController = TestBed.get(HttpTestingController);
reportService = TestBed.get(ReportService);
sharedService = TestBed.get(SharedService);
});