Angular 单元测试:如何调用命名函数
Angular Unit Testing: How do i call a named function
我有一个控制器,其中包含一个命名函数。
function controller($scope, ...){
function foo(data){
//logic for other stuff
$log(data);
}
//some promise stuff
waiting.then(function(data){
foo(data);
});
对于函数可用的方式,我不想将 foo 分配给范围变量,因为这样做是这样的:
$scope.foo = function(data) {}
被人皱眉? (不确定......但因为我不是从视图中调用 foo,所以我不明白为什么我会这样做)
我的问题是,如何从单元测试 "it" 块中调用 foo 函数?
即
it('expect calling function', function(){
foo(data);
});
这给我错误
无法在控制器外部调用 foo
函数,因为 foo
是闭包 - 内部函数已定义且仅在控制器函数体内可用。
参见 https://developer.mozilla.org/cs/docs/Web/JavaScript/Closures#Lexical_scoping
我更喜欢 angular 控制器的 controllerAs 语法。 Controller 是普通的对象构造函数,其属性和方法定义在 this 上。
绑定到范围仅在评估 ng-controller 指令(或路由显示)期间出现。
通常,您可以在测试中创建控制器实例,模拟依赖项 (waiting
) 并更轻松地使用 spies 进行断言函数调用。
http://toddmotto.com/digging-into-angulars-controller-as-syntax/
我有一个控制器,其中包含一个命名函数。
function controller($scope, ...){
function foo(data){
//logic for other stuff
$log(data);
}
//some promise stuff
waiting.then(function(data){
foo(data);
});
对于函数可用的方式,我不想将 foo 分配给范围变量,因为这样做是这样的:
$scope.foo = function(data) {}
被人皱眉? (不确定......但因为我不是从视图中调用 foo,所以我不明白为什么我会这样做)
我的问题是,如何从单元测试 "it" 块中调用 foo 函数?
即
it('expect calling function', function(){
foo(data);
});
这给我错误
无法在控制器外部调用 foo
函数,因为 foo
是闭包 - 内部函数已定义且仅在控制器函数体内可用。
参见 https://developer.mozilla.org/cs/docs/Web/JavaScript/Closures#Lexical_scoping
我更喜欢 angular 控制器的 controllerAs 语法。 Controller 是普通的对象构造函数,其属性和方法定义在 this 上。 绑定到范围仅在评估 ng-controller 指令(或路由显示)期间出现。
通常,您可以在测试中创建控制器实例,模拟依赖项 (waiting
) 并更轻松地使用 spies 进行断言函数调用。
http://toddmotto.com/digging-into-angulars-controller-as-syntax/