2016-09-12 38 views
1

在我的控制器中,我有一条语句根据条件在变量中分配一个空函数。Jasmine:检查一个变量是否为空函数

var vm = this; 
vm.emptyFunction = angular.isFunction(callback) ? callback : function() {}; 

我该如何测试这个vm.emptyFunction实际上是一个空函数?

事情,没有工作:

expect(vm.emptyFunction).toEqual({}); 
expect(vm.emptyFunction()).toEqual({}); 
expect(vm.emptyFunction).toEqual(() => {}); //using typescript 

件事的工作是:

expect(vm.emptyFunction).toEqual(jasmine.any(Function)); 

但是,这将得到任何有效的函数定义。

+1

为什么你要测试这种情况? 'emptyFunction'可以从外部定义,如果它是一个空函数,这将是一个错误?该函数默认是空的,应该分配一个适当的函数,以便测试被测模块的未初始化属性? –

+0

这里'callback'被注入到控制器中。我需要测试是否传递了未定义的'callback',然后'vm.emptyFunction'是一个空函数而不是'callback'。 –

+0

然后在前一种情况下测试类型'function'并测试回调是否被调用应该是要走的路。 –

回答

0

我能想到的唯一的事情就是对同一个空函数使用相同的引用。

var emptyFunction = function {}; 

然后用

vm.emptyFunction = angular.isFunction(callback) ? callback : emptyFunction; 

然后测试

expect(vm.emptyFunction).toEqual(emptyFunction); 
+0

在这种情况下,我必须从外部传递'emptyFunction'的引用。这里'callback'被注入到控制器中。我需要检查是否将'callback'传递为undefined,那么'vm.emptyFunction'应该是一个空函数而不是'callback'。 –