- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很好奇如何对指令内的匿名 Controller 进行单元测试。
directive.js
app.directive('directive',
function() {
var controller = ['$scope', function($scope) {
$scope.add = function() { ... };
}];
return {
restrict: 'A',
scope: {
args: '='
},
templateUrl: '...',
controller: 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 ...)
错误,所以我认为我没有正确初始化 Controller 。我主要想知道这样的东西是否可以在完全不更改指令源代码的情况下进行单元测试。
最佳答案
我不确定您尝试做的事情是否可行。但是,我确实知道有一种更简单的方法,那就是让它成为一个标准 Controller 。 (您似乎已经意识到这一点,但值得指出。)
Controller 中的逻辑无论如何都不应该依赖于指令,因此通过创建命名 Controller ,您可以分离关注点,这是一件好事。 You can even see this used in recommended style guides for AngularJS.正确设置 Controller 后,测试它应该没有任何问题。像这样拆分它也有助于进行适当的依赖注入(inject),从而使代码和测试更简单。
关于javascript - Angular 单元测试在指令中初始化 "nameless" Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34679438/
我在一个匿名的 actionListener 中创建了 26 个 JButton 标记为字母表中的每个字母。 for (int i = 65; i < 91; i++){ final char
我很好奇如何对指令内的匿名 Controller 进行单元测试。 directive.js app.directive('directive', function() { va
在 Haskell 中 GHC base具有类型 (->) r 的 Functor 实例的定义: instance Functor ((->) r) where fmap = (.) Type
有一天,我厌倦了重复输入 addTarget:action:forControlEvents:s,而宏的娱乐性只有这么长时间,所以我这样做了: @implementation UIControl (x
我是一名优秀的程序员,十分优秀!