1
我真的希望这是一个微不足道的问题。是的,我有RTFM。我实际上使用Angular记录的方式来注入控制器,但由于某种原因,我的控制器没有定义。这里的主要区别是,我习惯于单模块应用程序,这次我有一个多模块应用程序。我不认为这会有所作为,但你去。而是一个漫长的描述,我会直奔代码:如何将角度控制器注入我的单元测试
采用了棱角分明1.2.16
单元测试框架:茉莉花
app.js
angular.module('OBB', [
// Native AngularJS DI
'ngResource', 'ngCookies',
// bunch of modules
...
// OBB Page Modules
'OBB.home', 'OBB.buckets', 'OBB.company', 'OBB.advSearch', 'OBB.users'
])
所以,我试图在OBB.home模块中测试一个控制器。
home.js
angular.module('OBB.home', ['ui.router'])
.controller('HomeCtrl', ['$log', '$rootScope', '$scope', '$state', 'AUTH_EVENTS',
function HomeCtrl ($log, $rootScope, $scope, $state, AUTH_EVENTS) {
$scope.signInFormData = {
email: null, password: null
};
//more code...
}]);
home.spec.js
describe('Unit Home Controllers: ', function() {
var homeController, scope;
beforeEach(module('OBB.home'));
beforeEach(inject(function (_$rootScope_, $controller) {
scope = _$rootScope_.$new();
homeController = $controller('HomeCtrl', {
$rootScope: _$rootScope_,
$scope: scope,
$log: {},
$state: {},
AUTH_EVENTS: {},
});
}));
it('Home Controller is correctly instantiated', inject(function() {
expect(scope).toBeDefined(); // Pass
expect(scope.signInFormData).toBeDefined(); // Fails
}));
});
这不适合我。即使确保函数参数列表匹配后,我仍然得到一个未定义的控制器。最令人沮丧的是,没有任何错误信息,甚至给我一些可能出错的提示。这只是未定义的。我不确定是否有嵌套的错误,因为模块也有相关的服务。我要通过控制器并开始评论一切,并慢慢打开它,看看是否有帮助。 – 2015-02-11 16:25:15
更新我的代码以显示您的添加。谢谢! – 2015-02-11 16:27:22