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

154
Views
Pruebas unitarias de componentes de Angular2 con dependencia del servicio

Entonces tengo este PromptComponent y el contenido será actualizado por un servicio de datos. Ahora estoy tratando de hacer la prueba unitaria de este componente que tiene esta dependencia de servicio. Aquí está el componente:

 export class PromptComponent { @Input() module: any; @select() selectedPrompt; constructor(private moduleService: ModuleService){} }

Aquí está el servicio:

 getQuote(): Promise<string> { return new Promise(resolve => { setTimeout( () => resolve(this.nextQuote()), 500 ); }); } private nextQuote() { if (this.next === quotes.length) { this.next = 0; } return quotes[ this.next++ ]; }

Aquí está el código de prueba de la unidad:

 beforeEach(() => { TestBed.configureTestingModule({ declarations: [ PromptComponent, ], providers: [ ModuleService] }); fixture = TestBed.createComponent(PromptComponent); component = fixture.componentInstance; const moduleService = fixture.debugElement.injector.get(ModuleService); spy = spyOn(moduleService, 'getQuote').and.returnValue(Promise.resolve(testService));

Me referí a la demostración oficial en la documentación angular https://angular.io/resources/live-examples/testing/ts/eplnkr.html , como dentro de TwainComponent.spec.

Algo realmente extraño es que, como era de esperar, dentro de la demostración oficial, la prueba de TwainComponent pasó sin problemas. Pero yo, por otro lado, obtuve este extraño error de inyección. Si elimino el parámetro dentro del constructor, puedo crear la instancia del accesorio pero obtengo un error de inyección cuando se ejecuta a través de la parte injector.get(). Pero tan pronto como vuelva a poner el private moduleService:ModuleService dentro del constructor del componente, obtendré el dispositivo sin definir y también con el error de inyección.

Eso significa que ni siquiera puedo ejecutar mi código en la parte de inyección de servicio real ( fixture.debugElement.injector.get(ModuleService) ), ya recibí el error.

¿Alguien tiene el mismo problema? Mi código es casi idéntico al código de demostración en Plunker. No tengo ni idea de cómo seguir adelante....

over 4 years ago · Santiago Trujillo
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!