現在、RequireJSでAngularJSを使用しようとしていますが、インジェクションでテストを機能させる方法がわかりません。RequireJSがなければ、
実装
PhoneListCtrl.$inject = ['$scope', '$http'];
var PhoneListCtrl = ['$scope', '$http', function($scope, $http) {
/* constructor body */
}];
テスト
beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
$httpBackend = _$httpBackend_;
$httpBackend.expectGET('phones/phones.json').
respond([{name: 'Nexus S'}, {name: 'Motorola DROID'}]);
scope = $rootScope.$new();
ctrl = $controller(PhoneListCtrl, {$scope: scope});
}));
ただし、RequireJSを使用する場合、コントローラーを次のように定義できます。
demoController.js
define(["dependency"], function() {
/* constructor body */
});
このコントローラーを使用する場合、依存関係の1つとして追加し、変数宣言はありません(「サービス」と呼ぶ方がよいので、例として「コントローラー」を使用します)。
someJS.js
define(["demoController"], function(controller) {
controller.method();
});
私の質問
RequireJS(AMD)を使用する場合、テストのために$ http、$ scope(または他の何か)をターゲットコントローラーまたはサービスに注入するにはどうすればよいですか?
どんな助けでも大歓迎です。