严格模式下 Angular 应用程序的 httpBackend 显式注解

httpBackend explicit annotation for Angular app in strict mode

我正在使用 Protractor 的 addMockModule 功能模拟一些请求数据,但目标 Angular 应用处于严格模式时遇到问题。

这是错误:

Failed: unknown error: [$injector:strictdi] function($httpBackend) is not using explicit annotation and cannot be invoked in strict mode

这是代码:

    var httpBackendMock = function() {
        angular.module('httpBackendMock', ['my-app', 'ngMockE2E'])
            .run(function($httpBackend){
                var expected_response = {"limit": 1}

            $httpBackend.whenGET(/homepage/).respond(function() {
                return [200, expected_response];
            });
            $httpBackend.whenGET(/.*/).passThrough();
        });
    };

    browser.addMockModule('httpBackendMock', httpBackendMock);      

有什么方法可以在 Angular 的上下文中显式注入 $httpBackend 吗?

尝试为您的 运行 块显式提供依赖项:

.run(['$httpBackend', function($httpBackend) {
    //     ^^^ - inject explicitly
}]);

这基本上就是严格模式背后的想法,它强制您显式设置注入 (docs)。

替代方法如下:

angular.module('app', []).run(runBlock);

runBlock.$inject = ['$httpBackend'];

function runBlock($httpBackend) {
    // ...
}