単純な Jasmine テストを AngularJS モジュールで動作させることができません。アドバイスをいただければ幸いです。
コントローラ付きモジュール:
(function(myApp) {
myApp.App = angular.module("MyApp", []).
config(["$routeProvider", function($routeProvider) {
$routeProvider.
when('/', { controller: "CoreAppController", templateUrl: 'App.html' }).
otherwise({ redirectTo: '/' });
}]);
myApp.App.controller("CoreAppController", function($scope, $http, widgetService) {
/* controller definition */
}
}(window.myApp = window.myApp || {}));
単体テスト:
(function(myApp) {
describe("CoreAppController spec", function() {
describe("Create the CoreApp", function() {
beforeEach(angular.module("MyApp"));
describe("CoreAppController", function() {
it("Should create the core application",
expect(1).toBeGreaterThan(0)
)
});
})
});
}(window.myApp = window.myApp || {}));
テスト ファイルに含まれるファイルの順序は次のとおりです。
- jasmine.js
- ジャスミン-html.js
- angular.min.js
- angular.mock.js
- app.js (モジュールとコントローラーの定義を含む)
- CoreAppControllerSpec.js (単体テスト ファイル)。
このテストを実行すると、次のエラーが発生します。
TypeError: Object # has no method 'apply' at jasmine.Block.execute (file:///C:/TeamFoundation/PRE/test/jasmine/jasmine.js:1064:17) at jasmine.Queue.next_ (file: ///C:/TeamFoundation/PRE/test/jasmine/jasmine.js:2096:31) jasmine.Queue.start (file:///C:/TeamFoundation/PRE/test/jasmine/jasmine.js:2049) :8) jasmine.Spec.execute (file:///C:/TeamFoundation/PRE/test/jasmine/jasmine.js:2376:14) で jasmine.Queue.next_ (file:///C:/TeamFoundation) で/PRE/test/jasmine/jasmine.js:2096:31) jasmine.Queue.start で (file:///C:/TeamFoundation/PRE/test/jasmine/jasmine.js:2049:8) jasmine.Suite で.execute (file:///C:/TeamFoundation/PRE/test/jasmine/jasmine.js:2521:14) jasmine.Queue.next_ (file:///C:/TeamFoundation/PRE/test/jasmine/) でjasmine.js:2096:31) jasmine.Queue.start (file:///C:/TeamFoundation/PRE/test/jasmine/jasmine.js:2049:8) jasmine.Suite.execute (file:///C:/TeamFoundation/PRE/test/jasmine/jasmine.js:2521:14) で
テストから「モジュール」行を削除すると、テストは成功します。私は何を間違っていますか?