Внедренная служба в службе не определена в тестах - PullRequest
0 голосов
/ 16 октября 2019

Я внедрил сервис в конструктор, используя 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);

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