垫子小吃栏单元测试消息为空



我有一个使用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倍于你花在测试上的时间,这最终是没有成效的。

相关内容

  • 没有找到相关文章

最新更新