在$ http的错误函数中抛出错误会导致单元测试中的$ digest正在进行中

时间:2013-07-11 12:45:52

标签: unit-testing angularjs jasmine karma-runner

这是一个显示问题的傻瓜:

http://plnkr.co/edit/J8zRIj?p=preview

这是一个plunker,在scripts.js和scripts.spec.js中都注释了错误,我不再收到$ digest错误了:

http://plnkr.co/edit/jCRlwf?p=preview

当它们不在$ http请求的回调中时,抛出和测试错误似乎有效。任何人都知道为什么这可能不起作用?

1 个答案:

答案 0 :(得分:5)

问题是mock $ exceptionHandler服务默认重新抛出异常。因此,您的异常导致$ rootScope。$ apply将在中间中止。

一种解决方案是将mock $ exceptionHandlerProvider切换为'log'模式,然后检查$ exceptionHandler.errors。 See here