如何用备用模拟服务器替换$httpBackend
How to substitute $httpBackend with alternate mock server?
我有Angular(1.2.x)单元测试,其中我使用ngMock
。我的项目有一个依赖于sinon.fakeServer
的夹具系统。对于我的单元测试,我更喜欢使用它,而不是$httpBackend
。
ngMockE2E
测试Angular提供了一个passthrough
方法,但是对于单元测试没有明确的等效方法。基本原理似乎是单元测试永远不应该通过(到服务器),但在我的情况下,我只是试图通过一个非角度相关的mock。
我现在的策略是创建一个匹配.whenGet
和.whenPost
请求的填充程序,并将它们路由到我的假服务器。
然而,最好是简单地"关闭"$httpBackend
。有办法做到这一点吗?
您可能想要尝试
angular.module('httpReal', ['ng'])
.config(['$provide', function($provide) {
$provide.decorator('$httpBackend', function() {
return angular.injector(['ng']).get('$httpBackend');
});
}])
.service('httpReal', ['$rootScope', function($rootScope) {
this.submit = function() {
$rootScope.$digest();
};
}]);
通过这种方式,您可以恢复httpBackend。有关更多详细信息,请参阅:E2E mock$httpBackend';t实际上通过了
此解决方案可能有效。
因此,建议使用ngMockE2E的$httpBackend。实际上,如果您的测试导致XHR请求,它就不是"单元测试"。
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何用更合适的内容替换document.write
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 用空格替换下划线PHP
- str.split(someString).join(someOtherString)是否等效于替换
- 使用javascript的图像替换循环
- window.location替换并传递URL历史记录条目中的变量
- 替换标记中的属性
- 指令的模板必须只有一个根元素:With restrict E&替换true
- AngularJs对ng消息的自定义替换
- 用超链接替换URLS
- 用cdata标记替换脚本标记
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 在javascript中,I'我很难弄清楚如何让regex只替换捕获而不替换匹配
- 替换url中变量的值
- 我希望在不替换现有变量的情况下恢复localStorage中的变量
- Wordpress:替换源(域名)链接
- 如何用备用模拟服务器替换$httpBackend