我有一个使用的定制服务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
应该可以解决你的问题。
至于单元测试:你一定已经猜到了,unit测试意味着测试一个单元。
一个单元就是一段代码
- 你自己写的
- 在给定范围(函数、类)中定义的
- 具有依赖关系(注入、参数...)
当您测试该单元时,您需要遵循几个步骤
单元测试的目的是防止修改带来的副作用.
例如,您有一个组件,如果 HTTP 答案为 200,则只需将按钮着色为绿色。
单元测试的目的是确保如果答案是 200,颜色会变成绿色。
这意味着如果您没有收到 200,则颜色不应改变;如果您收到 200,则颜色应仅为绿色。
应用于您的情况,您的测试的目的是确保使用您的自定义组件调用零食。
你的目的不是测试零食的作品。小吃栏本身就是一个单元,并且您没有编写代码:小吃栏的单元测试是由 Angular Material 单元测试进行测试的,而不是由您进行测试。
In fine,您的测试没有错误:它只是另一个测试的重复,因此它是“无用的”,因为它已经被测试过。
如果继续这样测试,您将花费 3、4 倍于测试的时间,这最终不会产生任何成效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)