我有 Angular (1.2.x) 单元测试,我正在使用 ngMock
。我的项目有一个依赖于 sinon.fakeServer
的夹具系统。对于我的单元测试,我更愿意使用它而不是 $httpBackend
。
ngMockE2E
测试 Angular 提供了一个passthrough
方法,但是没有一个明确的单元测试等效方法。理seems to be单元测试永远不应该传递(到服务器),但在我的情况下,我只是想传递到非 Angular-dependent-mock。
我现在的策略是创建一个匹配 .whenGet
和 .whenPost
请求的 shim,并将它们路由到我的假服务器。
但是,更好的方法是简单地“关闭”$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 doesn't actually passThrough for me
关于javascript - 如何用备用模拟服务器替换 $httpBackend?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36945011/