我有问题spyOn方法绑定到一个工厂服务范围。$ on的事件,使用Jasmine。最初传递的真实方法被称为,而不是间谍。 我做了一个plinkr:http://plnkr.co/edit/2RPwrw?p=preview
感谢您的帮助。
答案 0 :(得分:7)
这是因为你绑定回调的方式。变化
service.$on('hello', service.method);
到
service.$on('hello', function() {
service.method();
});
当您说spyOn(service, 'method')
时,您说“用间谍替换service.method
处引用的值”。但是,您的原始service.$on
代码在触发事件时不会在service.method 中查找值 - 而是在初始化服务时查找 。因此,更改service.method
指向以后的引用无效。