tengo un metodo
delete(document: IDocument): void { const headerMessage = '' const message = '' const confirm = '' const reject = '' this.dialogService.openDialog(headerMessage, message, confirm, reject); this.dialogService.isClosed().subscribe(confirmed => { if (confirmed && document.id) { this.documentService.delete(document.id).subscribe(() => { this.loadPage(); }); } }); }Simplemente no puedo probarlo bien.
La prueba unitaria es esta:
it('should call delete service using confirmDialog',() => { // GIVEN const dialogService = TestBed.inject(DialogService); jest.spyOn(dialogService.dialogRef, 'afterClosed').mockReturnValue(of({})); const result = dialogService.isClosed(); expect(result instanceof Observable).toBe(true); expect(dialogService.dialogRef.afterClosed).toHaveBeenCalled(); jest.spyOn(service, 'delete').mockReturnValue(of(new HttpResponse({}))); // WHEN comp.delete({ id: 123 }); // THEN expect(service.delete).toHaveBeenCalledWith(123); });me sale error:
Cannot spyOn on a primitive value; undefined given 139 | 140 | const dialogService = TestBed.inject(DialogService); > 141 | jest.spyOn(dialogService.dialogRef, 'afterClosed').mockReturnValue(of({}));Como no puedo simplemente probar el método de eliminación, necesito simular el diálogo y eliminarlo si se acepta pero no entiendo el error. A continuación se muestra el servicio de diálogo de confirmación:
export class DialogService { dialogRef!: MatDialogRef<ConfirmationDialogComponent>; constructor(private dialog: MatDialog) {} openDialog(headerMsg: string, msg: string, confirm: string, reject: string): void { this.dialogRef = this.dialog.open(ConfirmationDialogComponent, { data: { header: headerMsg, message: msg, buttonText: { ok: confirm, cancel: reject, }, }, }); } isClosed(): Observable<any> { return this.dialogRef.afterClosed(); } }Básicamente, solo necesito una simulación que haga clic en aceptar y luego verifique el método de eliminación