0

我正在使用 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 ?

4

1 回答 1

1

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

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

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

替代方法如下所示:

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

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

function runBlock($httpBackend) {
    // ...
}
于 2015-08-13T08:34:40.263 回答