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

122
Vistas
Burlarse de la clase base en una prueba unitaria para Angular 2

Estoy tratando de escribir una prueba unitaria para ver si se llama al método de clase base

Aquí está la clase base

 export abstract class Animal{ protected eatFood() { console.log("EAT FOOD!") } }

Esta es la clase que quiero probar.

 export class Monkey extends Animal { onHungry(){ this.eatFood(); } }

aquí está la prueba

 class MockAnimal { public eatFood() { console.log("EAT MOCKED FOOD!"); } } describe('Monkey', () => { beforeEach(() => { TestBed.configureTestingModule({ declarations:[Monkey], providers: [ { provide: Animal, useClass: MockAnimal } ] } }); it('eat food when hungry', fakeAsync(() => { let fixture = TestBed.createComponent(Monkey); spyOn(fixture, 'eatFood'); fixture.componentInstance.onHungry(); expect(fixture.eatFood).toHaveBeenCalled(); })); }

No puedo obtener la prueba unitaria para ejecutar esta clase MockAnimal . ¿Es así como probarlo?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

TestBed se usa para probar componentes y, como en un NgModule normal, define declaraciones, importaciones, proveedores, ... Pero lo que quiere probar es una clase simple. En la prueba tienes que inicializarlo manualmente:

 describe('Monkey', () => { it('eats if hungry', () => { const monkey = new Monkey(); // spying will only work if 'eatFood' is public const eatFoodSpy = spyOn(monkey, 'eatFood'); monkey.onHungry(); expect(eatFoodSpy).toHaveBeenCalled(); }); });
about 4 years ago · Santiago Trujillo Denunciar

0

Puedes hacer esto, que se burlará de tu llamada.

 it('eat food when hungry', fakeAsync(() => { let fixture = TestBed.createComponent(Monkey); fixture.componentInstance['eatFood'] = jasmine.createSpy('eatFood'); fixture.componentInstance.onHungry(); expect(fixture.eatFood).toHaveBeenCalled(); }));
about 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