【发布时间】:2019-10-14 18:05:10
【问题描述】:
我有一个自定义服务使用matSnackbar 来显示警报,还有一个自定义matSnackbar 组件用作snackBar 的模板。
我为它编写了一个单元测试,并想测试在其中显示我的消息:
fit('should show my alert message', () => {
service.openSnackBarFromComponent('lia lia');
expect(element.querySelector('.message-container span').innerText).toBe('lia lia');
});
我在浏览器中看到它显示了我的消息"lia lia",但在上面的测试中.message-container span 的内容为空。我的问题是为什么它显示 null 和/或任何其他方式来测试我的消息?
【问题讨论】:
-
尝试使用
fixture.detectChanges()。但是您不应该测试消息是否显示,因为它不是您自己的代码:您应该简单地测试方法openSnackBarFromComponent是否被调用。如果你不这样做,明天你改变你的 UI 库,你的测试就不会通过了。 -
@Maryannah 非常感谢,
fixture.detectChanges()解决了我的问题。我是单元测试的新手,我会这样做,谢谢。 -
那么让我来回答一下我的评论。
-
@Maryannah 当然是的。
标签: angular unit-testing angular-material