我正在重构一个有角度的应用程序,以更好地利用DI-通过将功能转移到可以通过适当模拟独立进行单元测试的可注入类中,从而特别提高了模块性和可测试性。
我在尝试调试测试中的错误时遇到了一个常规问题。问题在于,由angular提供的错误消息通常很少提供有关实际出了什么问题的信息。
例如,当我创建一个类,表明被测组件依赖于可注射组件时,在现有测试中提供了以下消息:
Error: Arguments array must have arguments.
at injectArgs node_modules/@angular/core/fesm5/core.js:1805:1)
at http://localhost:9876/_karma_webpack_/webpack:/node_modules/@angular/core/fesm5/core.js:15509:72
at _callFactory node_modules/@angular/core/fesm5/core.js:21270:1)
at _createProviderInstance node_modules/@angular/core/fesm5/core.js:21228:1)
at resolveNgModuleDep node_modules/@angular/core/fesm5/core.js:21203:1)
at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get node_modules/@angular/core/fesm5/core.js:21897:1)
at resolveDep node_modules/@angular/core/fesm5/core.js:22268:1)
at createClass node_modules/@angular/core/fesm5/core.js:22148:1)
at createDirectiveInstance node_modules/@angular/core/fesm5/core.js:22019:1)
at createViewNodes node_modules/@angular/core/fesm5/core.js:23245:1)
鉴于错误消息和跟踪完全没有引用我的任何代码,我发现它几乎没有用。因此,我尝试了一些随机的事情,并演练了代码,看看是否可以解决问题。事实证明,在这种情况下,我忘记为组件所依赖的一项服务注入间谍了。但是我不知道如何从错误消息中得知这一点。
我的问题是给经验丰富的Angular开发人员:您根据这些类型的隐秘错误消息使用了哪些技术进行调试?您是否经常需要探究Angular代码来确定出了什么问题或通常没有帮助?