0

分度器の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
}]);

これは基本的に厳密モードの背後にある考え方であり、インジェクションを明示的に設定する必要があります ( docs )。

代替アプローチは次のようになります。

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

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

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