Angular 单元测试点击事件,仅使用 Jasmin & Karma 执行 navigateByUrl



如何在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. 

最新更新