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

Adr*_*atu 0 unit-testing jasmine angularjs

我正在使用Jasmine来测试我的Angular应用程序.如果使用类似的方法调用函数的方法,则很容易测试:

spyOn($rootScope, "$emit");
expect($rootScope.$emit).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)

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

JJJ*_*JJJ 6

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

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

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

expect($anchorScroll).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)

这应该只是创建一个空白的间谍,一个将采取任何参数,除了跟踪测试使用的调用之外什么都不做.