2

我在使用 Jasmine 在工厂服务中监视绑定到具有 scope.$on 的事件的方法时遇到问题。调用最初传递的真实方法,而不是 spy。我做了一个 plinkr:http ://plnkr.co/edit/2RPwrw?p=preview

谢谢你的帮助。

4

1 回答 1

7

这是因为您绑定回调的方式。改变

service.$on('hello', service.method);

service.$on('hello', function() {
  service.method();
});

当您说 时spyOn(service, 'method'),您是在说“用service.method间谍替换引用的值”。但是,您的原始service.$on代码不会在触发事件时查找 service.method 的值——而是在服务初始化时查找它。因此,更改service.method指向稍后的引用没有效果。

于 2013-04-30T19:10:49.197 回答