【问题标题】:httpBackend explicit annotation for Angular app in strict modeAngular 应用程序在严格模式下的 httpBackend 显式注释
【发布时间】:2015-08-13 08:27:35
【问题描述】:

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

【问题讨论】:

    标签: angularjs mocking protractor angularjs-e2e httpbackend


    【解决方案1】:

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

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

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

    替代方法如下:

    angular.module('app', []).run(runBlock);
    
    runBlock.$inject = ['$httpBackend'];
    
    function runBlock($httpBackend) {
        // ...
    }
    

    【讨论】:

    • 感谢您的帮助!另一种方法效果很好:)
    猜你喜欢
    • 2017-02-09
    • 2016-08-09
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多