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

198
Vistas
¿La prueba angular falla en el inyector?

Tengo el siguiente componente:

 @Component({ selector: 'app-comment-table', templateUrl: './comment-table.component.html', styleUrls: ['./comment-table.component.css'] }) export class CommentTableComponent implements OnInit { @Input() line: string; comments: Array<IComments>; constructor(private socketService: SocketService) { this.comments = []; } //some functions }

y estoy tratando de probarlo con la siguiente prueba:

 class mockSocket { getComments() { return Observable.of() } }; describe('Comment Table Component', () => { let fixture, comp, el; let mockSock = new mockSocket(); beforeEach(() => { TestBed.configureTestingModule({ imports: [Ng2SmartTableModule], declarations: [CommentTableComponent], providers: [ { provide: SocketService, useValue: mockSock }], }); }); it('should call service', inject([CommentTableComponent], (cmp: CommentTableComponent) => { spyOn(mockSock, 'getComments'); cmp.ngOnInit(); expect(mockSock.getComments).toHaveBeenCalled(); })); });

Sin embargo, esta prueba está fallando con el mensaje de error:

Error en injectionError (webpack:///~/@angular/core/@angular/core.es5.js:1231:21 <- client/src/test.ts:6040:86) [ProxyZone] en noProviderError (webpack: ///~/@angular/core/@angular/core.es5.js:1269:0 <- client/src/test.ts:6078:12) [ProxyZone]

Creo que el componente solo necesita el SocketService que se le proporciona, que estoy proporcionando, sin embargo, ¿parece que falta un proveedor en ese error? ¿Qué estoy haciendo mal?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Agregue .compileComponents() a la creación de TestBed y envuélvalo en una función async() :

 beforeEach( async( () => { TestBed.configureTestingModule( { imports: [ Ng2SmartTableModule ], declarations: [ CommentTableComponent ], providers: [ { provide: SocketService, useValue: mockSock } ], } ).compileComponents(); } ) );

Si eso no es suficiente, envuelva la inject en un async() también:

 it('should call service', async( inject( [ CommentTableComponent ], ( cmp: CommentTableComponent ) => { spyOn( mockSock, 'getComments' ); cmp.ngOnInit(); expect( mockSock.getComments ).toHaveBeenCalled(); } ) ) );
over 4 years ago · Santiago Trujillo Denunciar
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