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

rya*_*zec 3 unit-testing jasmine angularjs karma-runner

这是一个显示问题的plunker:

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

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

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

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

Dav*_*ett 5

问题是mock $ exceptionHandler服务默认重新抛出异常.所以你的异常导致$ rootScope.$ apply在中间被中止.

一种解决方案是将mock $ exceptionHandlerProvider切换为'log'模式,然后检查$ exceptionHandler.errors.看到这里.