2016-10-20 6 views
0

$ routeProviderを含むこの関数をモジュール定義に渡すとき、どのようにして仕様で正しく模擬/注入しますか?

module.js

angular.module('myModule', [ 
    // Without the function($routeProvider) below the test passes. With it, it fails. 
    function($routeProvider) { 
    $routeProvider.when('/some/url/:id', {templateUrl: 'template.html', reloadOnSearch: false}); 
    } 
]) 

myModuleCtrl.js

angular.module('myModule') 
    .controller('myModuleCtrl', [ 
    '$scope', 
    function ($scope) { 
     $scope.testMethod = function() { 
     alert('Test Me!'); 
     } 
    } 
    ]); 

myModuleCtrl.spec.js

describe('myModuleCtrl', function() { 
    var controller; 
    var $scope; 

    beforeEach(angular.mock.module('myModule')); 
    beforeEach(function() { 
    $scope = {}; 
    }); 
    beforeEach(angular.mock.inject(function ($rootScope, $controller) { 
    controller = $controller('myModuleCtrl', {'$scope': $scope}); 
    })); 

    describe('when doing stuff', function() { 
    it('does other stuff', function() { 
     $scope.testMethod(); 
    }); 
    }); 
}); 

module.jsにコメントされているように、$ routeProvider行を指定しないと、specが渡されます。 ($ routeProviderを含む)をロードするために、このモジュールを取得するためにspecファイルに何をすべきか

Error: [$injector:modulerr] Failed to instantiate module myModule due to: 
Error: [$injector:modulerr] Failed to instantiate module function ($routeProvider) due to: 
Error: [$injector:unpr] Unknown provider: $routeProvider 

:それで、それは次のようなメッセージで失敗しますか?

+0

角度ルータが独立したモジュールで、テストのためにそこにする必要があります。あなたのソースコードにそれを含めましたか? https://code.angularjs.org/1.5.8/docs/api/ngRoute –

+0

$ routeProviderはconfig()ブロック内にある必要があります。モジュール定義のmodule.jsの構文が正しくありません。 –

+0

@ PeterJ.Hart仕様とは別に、私はこのコードを継承し、そのまま動作します。私が理解しているように、構文は同等のconfig()ブロックの簡略表記です。 – LikeMaBell

答えて

1

あなたのモジュールが注入されている必要があります依存ngRoute

angular.module('myModule', ['ngRoute']) 

Samethingは

beforeEach(angular.mock.module('myModule',['ngRoute'])); 
+0

「beforeEach(angular.mock.module( 'myModule'、 'ngRoute')); ' – LikeMaBell

関連する問題