javascript – 如何用备用模拟服务器替换$httpBackend?

我有Angular(1.2.x)单元测试,我正在使用ngMock.我的项目有一个依赖sinon.fakeServer的fixture系统.对于我的单元测试,我更喜欢使用它而不是$httpBackend.

ngMockE2E测试Angular提供了一个直通方法,但单元测试没有明确的等效方法.单元测试的基本原理seems to be永远不应该传递(到服务器),但在我的情况下,我只是试图传递给非Angular-dependent-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 doesn’t actually passThrough for me

相关文章

kindeditor4.x代码高亮功能默认使用的是prettify插件,prett...
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小