【发布时间】:2020-09-23 07:36:41
【问题描述】:
我在尝试模拟 PrimeNG 确认服务时遇到问题,因此我可以测试接受功能。 我的组件上有以下方法
deleteRow(rowData: any): void{
this.confirmationService.confirm({
message: 'Are you sure that you want to perform this deletion?',
accept: (): void => {
this.messageService.add({
severity: 'success',
summary: `Deleted`,
detail: `Deleted ${rowData.name}`
});
const index: number = this.areas.indexOf(rowData);
this.areas.splice(index, 1);
}
});
}
以及下面的测试
const confirmationService: ConfirmationService = TestBed.get(ConfirmationService);
const mockConfirm: any = spyOn(confirmationService, 'confirm').and.callFake((c: any) => {
c.accept();
});
component.deleteRow({id: 'aaa'});
expect(mockConfirm).toHaveBeenCalled();
});
这是我的测试平台设置
beforeEach(async(() => {
TestBed.configureTestingModule({
schemas: [NO_ERRORS_SCHEMA],
declarations: [AreasListComponent],
imports: [FormsModule,
ReactiveFormsModule,
ConfirmDialogModule,
FieldsetModule,
TableModule,
ToastModule,
DropdownModule,
NoopAnimationsModule
],
providers: [
ConfirmationService,
MessageService
]
})
.compileComponents();
})
);
模拟确认toHaveBeenCalled 失败,当我调试它时,服务上似乎没有模拟。
有人有什么想法吗?
问候
【问题讨论】:
-
您能
console.log或调试假回调以查看它是否被调用?