我正在使用Jasmine对我的Angular应用进行单元测试。如果使用类似的函数调用函数的方法,则很容易测试:
spyOn($rootScope, "$emit");
expect($rootScope.$emit).toHaveBeenCalled();
但我无法找到一种方法来检查函数何时被调用(没有方法),例如我正在使用$anchorScroll()
;在一个控制器,我不知道在哪里将上述代码应用于这个人。我已经看到了一些使用expect(window.myFunction()).toHaveBeenCalled()
的Jasmine示例,但这不适用于Angular的DI。
答案 0 :(得分:5)
我现在不能自己尝试,但也许你可以注入模拟$anchorScroll
而不是?
var $anchorScroll = jasmine.createSpy('anchorScroll');
$controller('MyCtrl', {
$anchorScroll: $anchorScroll
});
expect($anchorScroll).toHaveBeenCalled();
这应该只是创建一个空白的间谍,一个会接受任何参数但只做跟踪测试用途的调用。