每当有错误时,应打开小吃店,否则将被解雇。我想测试一下,
handleErrors(error: ErrorMessage): void {
this.snackBar.open(error.message, '', {
duration: 15000
})
}
routeToTallyConfig() {
this.router.navigateByUrl(ROUTE_TALLY_CONFIG)
}
onStateChange(state) {
if (Util.isNotNull(state)) {
// check errors
if (Util.isNotNull(state.error)) {
this.loader.display(false)
this.handleErrors(state.error)
} else {
// no errors
this.loader.display(false)
if (Util.isNotNull(state.user) && Util.isNotNull(state.user.id)) {
this.routeToTallyConfig()
}
}
}
}
在我的测试中,我将通过传递不同的状态值来调用onStateChange()
函数。在传递错误时,应显示小吃栏,如果没有错误则应该将其解除。如何在角度4中测试此行为?
答案 0 :(得分:3)
(我假设您设置了测试床并模拟了所有依赖项)
如果小吃已打开>>,您实际上并未测试,您测试是否已调用小吃打开功能。测试依赖是否有效不是你的工作,而是依赖的工作。
这意味着如果您想测试是否调用了零食,您必须这样做:
it('handleErrors should open the snacker', () => {
spyOn(component.snackBar, 'open');
component.handleErrors({message: 'error'} as any);
expect(component.snackBar.open).toHaveBeenCalledWith('error', '', {duration: 1500});
});
相反,您还可以测试是否未使用
调用零食 spyOn(component.snackBar, 'open');
// Tests ...
expect(component.snackBar.open).not.toHaveBeenCalled();
答案 1 :(得分:0)
您可以检查_openedSnackBarRef快餐栏的getter属性。如果打开则返回MatSnackBarRef,否则返回null