【发布时间】:2016-01-08 14:30:59
【问题描述】:
我很好奇如何对指令中的匿名控制器进行单元测试。
directive.js
app.directive('directive',
function() {
var controller = ['$scope', function($scope) {
$scope.add = function() { ... };
}];
return {
restrict: 'A',
scope: {
args: '='
},
templateUrl: '...',
controller: controller
};
}
};
这样定义的控制器是否可以进行单元测试?我试图用几种不同的方式初始化它。目前我有这样的设置:
describe('The directive', function() {
var element,
scope,
controller;
var args = {
...
}
beforeEach(module('app'));
beforeEach(module('path/to/template.html'));
beforeEach(function() {
inject(function($compile, $rootScope, $controller) {
scope = $rootScope.$new();
scope.args = args;
element = angular.element('<div directive></div>');
template = $compile(element)(scope);
scope.$digest();
controller = element.$controller;
});
});
// assertions go here
});
我不断收到TypeError: 'undefined' is not an object (evaluating ...) 错误,所以我认为我没有正确初始化控制器。我主要想知道这样的东西是否可以在完全不更改指令源代码的情况下进行单元测试。
【问题讨论】:
标签: javascript angularjs unit-testing angularjs-directive jasmine