我正在尝试使用通过Teaspoon运行的Jasmine在Angular中创建一些单元测试。测试正在运行,但是我有一个简单的测试只是为了测试是否存在失败的控制器。我有以下测试设置。
//= require spec_helper
require("angular");
require("angular-mocks");
var app = require("./app");
describe("My App", function() {
describe("App Controllers", function() {
beforeEach(module("app"))
it("Should have created an application controller", inject(function($rootScope, $controller){
var scope = $rootScope.$new();
ctrl = $controller("ApplicationCtrl", { $scope: scope });
}));
})
})
需要的语句由Browserify处理,它处理我的依赖项,但我也可以挂钩我用于规范助手的链接。
在需要的应用内部,我有
require("angular");
var controllers = require("./controllers");
var app = angular.module("app", [
"app.controllers"
]);
exports.app = app;
当我运行此测试时,我收到以下错误
Failure/Error: TypeError: '[object Object]' is not a function (evaluating 'module("aialerts")')
我花了很长时间试图解决这个问题,但我不知道发生了什么。任何帮助表示赞赏。
答案 0 :(得分:83)
我遇到了同样的问题。改变这一行:
beforeEach(module("app"))
为:
beforeEach(angular.mock.module("app"))
答案 1 :(得分:24)
Browserify使用节点样式require
,其中module
是可用于导出功能的对象:
console.log(module); // {exports: {}}
angular-mocks.js尝试将函数附加到window.module
,但在Browserify / Node中无法实现。
看一下angular-mocks source,看来角度模拟还会将module
函数附加到angular.mock
。因此,您必须使用module
。
angular.mock.module
对象