使用Angular 6测试时,有什么方法可以自动处理依赖项注入?

时间:2019-01-08 15:00:42

标签: angular karma-jasmine

我对单元测试,Karma,Jasmine等还很陌生,我真的不知道自己在做什么。我已经运行ng test,并且从angular创建的自动生成的测试中得到了大量测试失败。事实证明,其中99%只是缺少测试脚本中的依赖项。

我无法理解的原因是为什么我需要坐在这里查看应用程序中的每个组件,然后重新添加依赖项,这样我才可以开始学习测试。 Angular没有办法添加通过自动生成的单元测试所需的所有依赖项?

1 个答案:

答案 0 :(得分:0)

您在这里确实有几种选择。

您可以模拟所有第一级依赖关系,也可以使用schemas: [NO_ERRORS_SCHEMA]忽略子组件。 NO_ERRORS_SCHEMA很危险。而且您仍然必须模拟服务。

有一些npm软件包可以提供帮助,例如Spectator。这是我的文章,内容涉及为什么要嘲笑以及观众如何提供帮助。

https://medium.com/@fivedicephoto/why-you-shouldnt-use-no-errors-schema-in-angular-unit-tests-cdd478c30782

但是,为了使Angular渲染组件,即使是进行测试,它也需要满足组件的依赖关系。因此,不,没有真正的“解决之道”。但是有一些方法可以删除所有样板并简化它。

我与旁观者没有任何联系。

[编辑] 模拟正在提供满足真实合同的伪造物品。您可以通过满足子组件和服务的合同来模拟它们。但是,如果您有很多依赖关系(如容器组件常见的那样),那么这也很麻烦。