$ 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
:それで、それは次のようなメッセージで失敗しますか?
角度ルータが独立したモジュールで、テストのためにそこにする必要があります。あなたのソースコードにそれを含めましたか? https://code.angularjs.org/1.5.8/docs/api/ngRoute –
$ routeProviderはconfig()ブロック内にある必要があります。モジュール定義のmodule.jsの構文が正しくありません。 –
@ PeterJ.Hart仕様とは別に、私はこのコードを継承し、そのまま動作します。私が理解しているように、構文は同等のconfig()ブロックの簡略表記です。 – LikeMaBell