拦截器是 AngularJS 内置的一个特性,你能够插入一个请求或者回调方法链,修改或者打断各终结点之间的逻辑流。但在 AngularJS 应用的单元测试中,拦截器是用来捕捉 XHR 请求, 以免外部请求,由于它会触发内部路由(解析的时候),Controller,Service 甚至是 Directive (不要在 Directive上这样作 :P)。这就是一个单纯的 AngualrJS 方法,任何外部请求都会被过滤(好比你在作这些的时候用 $http),不过用拦截器会增长测试的复杂度和额外代码。所以若是你想避免拦截和 Mock,那么用 Midway 测试来对应你的路由, Controller, Service 和 Directive。单元测试
另外一种避免 XHR 操做的方法是使用 Mock。Mock 是用来模拟提供请求的返回数据的。因此若是你有一个开销很是大的操做(好比说调用外部 API )的时候,它须要用很长时间来获取数据,那么最好的办法就是用 Mock 来欺骗你的代码,让它继续干接下来的事情而非等待。Mock 是一个很是有用的方法,用来分离测试代码,排除噪音。测试
AngularJS 提供了内部的 Mock 模块 angular-mocks.js,用于 单元测试(不是 Midway 或者 E2E 测试) 。 Karma 配置文件查找 / test 文件夹下面的每一个测试文件,执行。记住一件事情,若是你打算在之后用 MochaJS 作单元测试,用 Bower 来管理 angular-mocks ,因此你能够确保 angular-mocks 最新。路由