gpt4 book ai didi

angular - 如何检查MatSnackBar是否打开?

转载 作者:行者123 更新时间:2023-12-02 11:22:02 25 4
gpt4 key购买 nike

只要出现错误,就应该打开 snackbar ,否则就会被解雇。我想测试一下,

 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() 函数。在传递错误时,应显示 snackbar ,如果没有错误,应将其关闭。如何在 Angular 4 中测试此行为?

最佳答案

(我假设您设置了测试床并模拟了所有依赖项)

您实际上并不测试零食是否打开,而是测试零食打开函数是否已被调用。测试依赖项是否有效不是您的工作,而是依赖项的工作。

这意味着如果您想测试零食是否被调用,您必须执行以下操作:

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();

关于angular - 如何检查MatSnackBar是否打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48762496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com