Angular的NO_ERRORS_SCHEMA存在问题?

时间:2017-01-16 16:59:14

标签: angular unit-testing

在测试具有子组件的组件时,您有几个选项:

  1. 导入设置组件和子组件的模块。问题是你实例化真正的子组件及其依赖项。
  2. 模拟子组件。这可能很繁琐,具体取决于它有多少个子组件。
  3. 使用NO_ERRORS_SCHEMA并忽略子组件。
  4. 鉴于大多数时候你只关心当前组件,为什么NO_ERRORS_SCHEMA在测试教程,博客文章等中没有给予更多关注?

    我知道它被标记为实验性的,但我不会因为

    而烦恼
    1. 它与Angular的其余部分一起发货,
    2. 鉴于其历史和即将发布的周期,整个Angular堆栈几乎是实验性的。
    3. NO_ERRORS_SCHEMA有问题吗?或者只是偶然的事情,它不会被提升更多?

1 个答案:

答案 0 :(得分:3)

我同意@ jonsharpe的评估,当您使用NO_ERROR_SCHEMA时隐藏任何模板错误,您可能会掩盖架构错误。

使用TestBed导入模块的替代方法会导致依赖树 - 地狱。

还有第三个替代shallow-render将自动模拟您的依赖树,因此您可以通过一行测试设置获得类型安全,模板安全性和依赖关系树分辨率。

完全披露,我是浅渲染的作者。