Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
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
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda