如何在angular中使用jasmine &业力
onClickCancel(): any {
this.router.navigateByUrl('login');
}
如何为下面的点击事件编写单元测试用例,在angular中使用Jasmin &业力。我是Angular新手。
addNewRole(): any {
const dialogRef = this.dialog.open(AddNewRoleComponent, {
width: '450px', disableClose: true
});
dialogRef.afterClosed().subscribe(() => {
this.getRoles();
});
}
editRole(roleData): any {
const dialogRef = this.dialog.open(AddNewRoleComponent, {
width: '450px', disableClose: true, data: roleData
});
dialogRef.afterClosed().subscribe(() => {
this.getRoles();
});
}
这是我对打开对话框的单元测试方法
it('should open the add role component on click of addNewRole', () => {
component.addNewRole();
expect(dialog.open.calls.count()).toBe(1);
});
我打开对话框的方法在其他测试用例中正常工作。TypeError: Cannot read property 'count' of undefined抛出错误。
如果有人推荐我,那将是我的荣幸。谢谢!!如果您想简单地覆盖onClickCancel()
方法中的行,您可以这样做:
it('should run #onClickCancel() method', () => {
spyOn(component, 'onClickCancel').and.callthrough();
component.onClickCancel();
expect(component.onClickCancel).toHaveBeenCalled();
});
// For the dialog services,
@Injectable()
class MockDialogService extends StandardDialog {
showDialogRef = {
afterClosed() {
return of('primary')
}
} as any;
}
providers: [
{ provide: StandardDialogService, useClass: MockDialogService }
]
it('should run #addNewRole() method', () => {
spyOn(component, 'addNewRole').and.callthrough();
component. addNewRole();
expect(component. addNewRole).toHaveBeenCalled();
});
// Same with editNewRole method too.