【问题标题】:Angular prevent mocking of $http serviceAngular 防止模拟 $http 服务
【发布时间】:2014-06-30 15:40:55
【问题描述】:
我正在为一个连接到我们也在开发的 REST API 的 Angular 应用程序编写一些测试。在这种情况下,我实际上想做一个集成测试而不是一个单元测试,所以我不想让 $http 服务被嘲笑。我想做一个真正的 AJAX 请求并测试响应是否符合我们的预期。
我不能简单地删除 angular-mock.js,因为这是其他测试所必需的,有没有办法强制 angular 使用真实的服务而不是替换为模拟的服务?
【问题讨论】:
标签:
javascript
angularjs
unit-testing
karma-runner
【解决方案1】:
您是否尝试过使用“passThrough”选项?它是专门为此目的而设计的:
与单元测试相反,在端到端测试场景中,或者在开发应用程序时将真正的后端 api 替换为 mock 的场景中,通常希望某些类别的请求绕过模拟并发出一个真实的 http 请求(例如从网络服务器获取模板或静态文件)。要使用此行为配置后端,请使用 when 的 passThrough 请求处理程序而不是 respond。
例如:
$httpBackend.whenGET(/my-resource\/.*/).passThrough();