我已选择在此问题的接受答案中基于选项2创建解决方案: Unit-testing directive controllers in Angular without making controller global。
我的代码看起来像这样:
(function () {
function myCtrl($scope) {
//All my controller code.
};
myAppModule.directive('myDirective', function($compile, $timeout) {
return {
restrict: 'E',
replace: true,
controller: myCtrl,
compile: function(tElement, tAttrs, transclude) {
return {
post: function(scope, element, attrs) {
//more code and stuff.
}
}
}
});
})();
我的简单问题是;因为控制器未在模块范围内定义,如何将其加载到我的测试文件中?
答案 0 :(得分:0)
正如答案所解释的那样,您必须将上面的代码拆分为三个文件:
function myCtrl($scope) {
在构建应用程序时,将这三个文件连接成一个文件,并将结果用于高效代码。
对于测试,您只需包含中间文件。这确实会在测试的全局命名空间中创建控制器。在生产代码中,封闭避免了这种污染。