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

标签 javascript angularjs mocking

我有 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/

相关文章:

javascript - 如何从 Chrome 的 Javascript 控制台获取输入?

java - 如何使用 hamcrest 断言 Set 具有具有确切属性的项目

javascript - 如何在轮播上显示上一张和下一张幻灯片的一部分?

javascript - 从客户端上传 azure 文件

javascript - 动态 child 正在扩大 parent 的宽度

javascript - 如何在 Firebase 简单登录电子邮件密码上显示错误密码的错误状态

javascript - 如何使用 Angular 访问嵌套的 JSON 数组数据,并按数组参数过滤?

javascript - WebSocket 连接失败 : Error during WebSocket handshake: Unexpected response code: 400

c++ - Google Mock 实际函数调用计数与 EXPECT_CALL 不匹配

c# - 使用私有(private)构造函数和静态创建方法以及私有(private) id 属性模拟类