问题描述
我最近将一个 Angular 应用程序从版本 8 升级到版本 10。在应用程序中,我使用了如下模式的扩展类:
@Injectable()
export class MyBaseClass {
constructor(myDependencyService: MyDependencyService,...) {}
}
@Injectable()
export class MyExtensionClass extends MyBaseClass {
// no explicit constructor in extension class
}
应用程序按预期运行,所有依赖项在扩展类的实例化时正确注入到基类构造函数中。但是,当运行单元测试时,依赖注入会崩溃,并且基类构造函数的所有参数都未定义。
在浏览器开发工具中查看编译后的源代码,Angular 为扩展类生成的工厂在执行测试时与运行应用程序时看起来完全不同:在运行测试时,编译后的工厂在以下情况下不传递任何参数创建扩展类。
我遵循了升级到 Ivy 编译器的所有建议,并且所有使用 DI 的类都在应用程序中进行了修饰和正常工作。执行测试时是否有一些特殊性会导致不同的编译结果?我是否错过了一些影响单元测试的配置更改?
更新:我已经向代码覆盖报告者指出了这个 DI 问题。当我删除覆盖选项时,依赖项被正确注入。报道记者和 Angular 编译器之间似乎存在一些冲突。我使用的是 karma-coverage-istanbul-reporter 3.0.2 版。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)