我有一个Angular 8应用程序,带有大约40个Jasmine单元测试。现在,每个测试都可以独立运行(在fdescribe
的帮助下),但是当它们一起运行时,某些组件“似乎”会引发错误,因为Chrome中的报告在标题中显示了这些组件错误说明如下:
抛出[对象ErrorEvent]
正如我所说,我已经分别运行了每个测试,并且运行正常。该控制台不是很有帮助,它会报告以下内容:
zone.js:191 Uncaught TypeError: Cannot read property 'toLowerCase' of undefined
at HttpXsrfInterceptor.intercept (http.js:2064)
at HttpInterceptorHandler.handle (http.js:1444)
at HttpInterceptingHandler.handle (http.js:2117)
at MergeMapSubscriber.eval [as project] (http.js:1195)
at MergeMapSubscriber._tryNext (mergeMap.js:126)
at MergeMapSubscriber._next (mergeMap.js:116)
at MergeMapSubscriber.Subscriber.next (Subscriber.js:102)
at Observable.eval [as _subscribe] (scalar.js:8)
at Observable._trySubscribe (Observable.js:182)
at Observable.subscribe (Observable.js:167)
at ____________________Elapsed_21_ms__At__Thu_Jul_18_2019_15_45_23_GMT_0100__British_Summer_Time_ ()
at Object.onScheduleTask (zone-testing.js:107)
at ZoneDelegate.scheduleTask (zone.js:400)
at Object.onScheduleTask (zone.js:296)
at ZoneDelegate.scheduleTask (zone.js:400)
at Zone.scheduleTask (zone.js:231)
at Zone.scheduleMacroTask (zone.js:254)
at scheduleMacroTaskWithCurrentZone (zone.js:1113)
at eval (zone.js:2089)
现在,我很确定没有一个测试是直接使用HttpClientModule
而不是HttpClientTestingModule
。
我已经按照其他帖子中的建议进行了操作,并且在没有源映射的情况下运行了测试,并且检查了是否存在发出HTTP请求的模块级代码。调用堆栈并没有真正告诉我我们代码库中的错误是从哪里引起的。有任何想法可能是什么问题吗?
确实有太多代码无法发布到StackBlitz或任何东西中,并且我无法发布摘要,因为我不知道错误来自哪个大型应用程序中的哪个位置。
答案 0 :(得分:0)
这可以通过异步方法抛出,您可以通过将addind'async'添加到测试中来进行检查,例如:
it('should do something', async(() => { ... //here your test }));
使用此方法,您可以隔离引发错误的测试并加以解决。