Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

912
Views
ReferenceError: no se puede acceder al servicio antes de la inicialización

Recibo un error cuando ejecuto una prueba unitaria con jasmine en la aplicación angular8. Tengo un servicio y dentro de este servicio estoy inyectando otro servicio.

 @Injectable({ providedIn: 'root' }) export class FirstService { constructor(private http: HttpClient, private configService: ConfigurationService) { }

cuando hago la prueba de ejecución de npm, siempre recibo un error:

Se produjo un error en afterAll ReferenceError: no se puede acceder a 'ConfigurationService' antes de la inicialización en Module.ConfigurationService ( http://localhost:9876/_karma_webpack_/main.js:1095:112 )

¿Alguna ayuda?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Debería proporcionar una simulación de ConfigService porque es una dependencia de FirstService . La forma más fácil de hacerlo es con un espía.

Algo como:

 let firstService: FirstServicec; let configServiceSpy: jasmine.SpyObj<ConfigService>; beforeEach(() => { const spy = jasmine.createSpyObj('ConfigService', ['getValue']); TestBed.configureTestingModule({ providers: [ FirstService, { provide: ConfigService, useValue: spy } ] }); // Inject both the service-to-test and its (spy) dependency configService = TestBed.get(ConfigService); configServiceSpy = TestBed.get(ValueService); });

Luego, puedes consumir el espía en la prueba como:

 it('#getValue should return stubbed value from a spy', () => { const stubValue = 'stub value'; configServiceSpy.getValue.and.returnValue(stubValue); expect(firstService.getValue()) .toBe(stubValue, 'service returned stub value'); expect(configServiceSpy.getValue.calls.count()) .toBe(1, 'spy method was called once'); expect(configServiceSpy.getValue.calls.mostRecent().returnValue) .toBe(stubValue); });

Para obtener más información, consulte esta sección de Angular Docs

over 4 years ago · Santiago Trujillo Report

0

Este puede ser un mensaje de error muy engañoso.

Una dependencia circular puede estar causándolo, ¡resuelva sus dependencias circulares!

No verá una advertencia de dependencia circular cuando ejecute 'npm run test', pero recibirá una advertencia cuando ejecute 'npm run serve' o 'npm run build'.

over 4 years ago · Santiago Trujillo Report

0

En mi caso, fue un error muy estúpido. Estaba usando servicios abstractos y cosas de useClass y tenía algo como esto en un archivo:

 constructor(@Optional() private readonly baseService: BaseService) { } export abstract class BaseService { public abstract doSomething(): void; }

Cambiando el orden a

 export abstract class BaseService { public abstract doSomething(): void; } constructor(@Optional() private readonly baseService: BaseService) { }

resolvió el problema. DIOS MÍO.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!