AngularJS单元测试检查是否调用了没有方法的函数

时间:2014-06-25 15:42:26

标签: angularjs unit-testing jasmine

我正在使用Jasmine对我的Angular应用进行单元测试。如果使用类似的函数调用函数的方法,则很容易测试:

spyOn($rootScope, "$emit");
expect($rootScope.$emit).toHaveBeenCalled();

但我无法找到一种方法来检查函数何时被调用(没有方法),例如我正在使用$anchorScroll();在一个控制器,我不知道在哪里将上述代码应用于这个人。我已经看到了一些使用expect(window.myFunction()).toHaveBeenCalled()的Jasmine示例,但这不适用于Angular的DI。

1 个答案:

答案 0 :(得分:5)

我现在不能自己尝试,但也许你可以注入模拟$anchorScroll而不是?

var $anchorScroll = jasmine.createSpy('anchorScroll');

$controller('MyCtrl', {
    $anchorScroll: $anchorScroll
});

expect($anchorScroll).toHaveBeenCalled();

这应该只是创建一个空白的间谍,一个会接受任何参数但只做跟踪测试用途的调用。