虚假业障错误:引发[对象ErrorEvent]

时间:2019-07-18 14:55:42

标签: angular unit-testing jasmine karma-runner

我有一个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或任何东西中,并且我无法发布摘要,因为我不知道错误来自哪个大型应用程序中的哪个位置。

1 个答案:

答案 0 :(得分:0)

这可以通过异步方法抛出,您可以通过将addind'async'添加到测试中来进行检查,例如:

it('should do something', async(() => { ... //here your test }));

使用此方法,您可以隔离引发错误的测试并加以解决。