我无法在AngularJS模块上进行简单的Jasmine测试。任何建议都将非常感谢。
带控制器的模块:
(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 || {}));
测试文件中包含的文件按以下顺序排列:
运行此测试会导致以下错误:
TypeError:对象#没有方法' apply' 在jasmine.Block.execute(file:/// C:/TeamFoundation/PRE/test/jasmine/jasmine.js:1064:17) 在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)
删除'模块'测试线导致它通过。我做错了什么?
答案 0 :(得分:5)
angular.module创建了一个新模块。
module是angular.mock.module的别名 - 在窗口上发布以便于访问 - 它收集模块的配置。
这就是为什么将angular.module更改为模块可以解决您的问题。
此致 埃坦
答案 1 :(得分:0)
奇怪的是,将'angular.module'改为'module'解决了这个问题!
答案 2 :(得分:0)
更好的解决方案是在angular-mocks.js
脚本之后加入angular.js
,以便角度模拟定义window.module = angular.mock.module = ...
(以及window.inject
,依此类推。 ..)。