es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Jasmine spy nunca es llamado.

Configuré un espía de Jasmine para probar que cuando el usuario hace clic en un botón (activando la función goBack()), se abre un componente de diálogo, o en lo que respecta a la prueba, se llama a una cosa. Es una prueba realmente simple, y tengo pruebas prácticamente idénticas que funcionan, pero esta no lo hace por alguna razón. La salida de la prueba dice que se esperaba que se llamara al espía open.

component-with-a-button.component.ts
“`typescript
import { MatDialog } from '@angular/material/dialog';

export class ComponentWithAButton {
constructor(private closeDialog: MatDialog) {}
// Un botón activa la siguiente función
goBack(): void {
this.closeDialog.open(CloseDialogComponent);
}
}

component-with-a-button.component.spec.ts
typescript
import { MatDialog } from '@angular/material/dialog';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ComponentWithAButton } from './component-with-a-button.component';

const closeDialogMock = { open: () => {} };

describe('ComponentWithAButton', () => {
let component: ComponentWithAButton;
let fixture: ComponentFixture<componentwithabutton>;

beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ComponentWithAButton],
providers: [
{
provide: MatDialog,
useValue: closeDialogMock,
}
],
}).compileComponents();
});

beforeEach(() => {
fixture = TestBed.createComponent(ComponentWithAButton);
component = fixture.componentInstance;
fixture.detectChanges();
});

describe('goBack', () => {
it('debería llamar a closeDialog.open', () => {
const closeDialogSpy = spyOn(closeDialogMock, 'open');
component.goBack();
expect(closeDialogSpy).toHaveBeenCalled();
});
});

});
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La salida de la prueba dice “Se esperaba que el espía open fuera llamado”. Esto significa que la función closeDialog.open no fue llamada cuando se activó la función goBack(). Para solucionar esto, debes asegurarte de que la función closeDialog.open sea llamada cuando se activa la función goBack().

Comments are closed.