我有一个使用matSnackbar
显示警报的自定义服务,以及一个用作snackBar模板的自定义matSnackbar
组件。 我为它写了一个单元测试,并想测试在其中显示我的信息:
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。 我的 Qusetion 是为什么它显示空和/或任何其他方法来测试我的消息?
在我的评论之后,fixture.detectChanges
应该可以解决您的问题。
至于单元测试:正如你一定已经猜到的那样,单元测试意味着测试一个单元。
单元是一段代码
- 你自己写的
- 在给定作用域(函数、类)中定义的
- 具有依赖关系(注入,参数...
测试该单元时,您需要遵循几个步骤
- 模拟依赖项
- 隔离设备
- 测试副作用
单元测试的目的是防止修改带来的副作用。
例如,您有一个组件,如果 HTTP 答案为 200,则只需将按钮着色为绿色。
单元测试的目的是确保如果答案为 200,颜色变为绿色。
这意味着如果您没有收到 200,颜色不应该改变,如果您收到 200,颜色应该只有绿色。
应用于您的案例,测试的目的是确保使用您的自定义组件调用零食程序。
测试零食作品不是你的目的。小吃栏本身就是一个单元,你没有编码:零食栏的单元测试是由角度材料单元测试测试的,而不是你。
总之,你的测试没有错:它只是另一个测试的重复,所以它是"无用的",因为它已经被测试过了。
如果你继续这样测试,你将花费3到4倍于你花在测试上的时间,这最终是没有成效的。