测试 angular 个具有很多依赖项的控制器
Testing angular controllers that have many dependencies
我正在尝试测试控制器。
someModule.controller('MyController', function($rootScope, $scope, dep1, dep2) {
...
$scope.aMethod = function() {
...
}
function bMethod() {
...
}
...
}]);
我这样定义我的测试:
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
console.log($controller);
MyController = $controller('MyController', {
$rootScope : $rootScope,
$scope: scope
});
console.log('Some debug message');
console.log(MyController);
}));
我得到这个输出:
LOG: function (expression, locals, later, ident) { ... }
LOG: 'Some debug message'
LOG: {}
即使我输入 dep1
和 dep2
我也会得到相同的结果。所以 scope
和 rootScope
必须存在,否则我在运行时会出错。
我不确定为什么这不起作用,因为最后一个输出是空的,所以控制器中没有函数,这是错误的。
我想至少测试 bMethod
,但它似乎没有正确创建我的控制器。
控制器实例上没有属性,因为它们未定义。
得到aMethod
属性的是scope
对象,不是MyController
:
expect(scope.aMethod).toBe(jasmine.any(Function));
bMethod
它没有附加到 scope
也没有附加到 this
变量,因此它在测试中不可用。测试中添加方法有两种方式:
$scope.bMethod = bMethod; //Attached to scope
this.bMethod = bMethod; //Attached to controller
在您的描述块中,您打印 MyController
。这是控制器的一个实例。如果你想获取示例中提供的 a 方法,打印 scope
你会看到 a 方法。
检查这个codepen --> http://codepen.io/gpincheiraa/pen/WwXGxV
我正在尝试测试控制器。
someModule.controller('MyController', function($rootScope, $scope, dep1, dep2) {
...
$scope.aMethod = function() {
...
}
function bMethod() {
...
}
...
}]);
我这样定义我的测试:
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
console.log($controller);
MyController = $controller('MyController', {
$rootScope : $rootScope,
$scope: scope
});
console.log('Some debug message');
console.log(MyController);
}));
我得到这个输出:
LOG: function (expression, locals, later, ident) { ... }
LOG: 'Some debug message'
LOG: {}
即使我输入 dep1
和 dep2
我也会得到相同的结果。所以 scope
和 rootScope
必须存在,否则我在运行时会出错。
我不确定为什么这不起作用,因为最后一个输出是空的,所以控制器中没有函数,这是错误的。
我想至少测试 bMethod
,但它似乎没有正确创建我的控制器。
控制器实例上没有属性,因为它们未定义。
得到aMethod
属性的是scope
对象,不是MyController
:
expect(scope.aMethod).toBe(jasmine.any(Function));
bMethod
它没有附加到 scope
也没有附加到 this
变量,因此它在测试中不可用。测试中添加方法有两种方式:
$scope.bMethod = bMethod; //Attached to scope
this.bMethod = bMethod; //Attached to controller
在您的描述块中,您打印 MyController
。这是控制器的一个实例。如果你想获取示例中提供的 a 方法,打印 scope
你会看到 a 方法。
检查这个codepen --> http://codepen.io/gpincheiraa/pen/WwXGxV