javascript - AngularJS + Jasmine : spy an event callback

标签 javascript angularjs jasmine

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

感谢您的帮助。

最佳答案

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

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

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

当您说 spyOn(service, 'method') 时,您是在说“用 spy 替换 service.method 中引用的值。”但是,当事件被触发时,您的原始 service.$on 代码不会在 service.method 处查找值,而是在 服务已初始化。因此,将 service.method 指向的引用更改为 later 没有任何效果。

关于javascript - AngularJS + Jasmine : spy an event callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16307062/

相关文章:

angular - 如何解决 Angular 单元测试错误 : "An error was thrown in afterAll\n[object ErrorEvent] thrown"

javascript - Node.js 和 Express : Static assets on dynamic routes aren't found

javascript - 当响应类型为 arraybuffer 时,如何从 HTTP get 方法读取 Angular JS 中的 RAW JSON?

javascript - 如何断言使用 Jasmine 点击事件调用 spy ?

javascript - AngularJs 列表 ng-click 选择选项转换

javascript - 如何使用angular js从过滤中排除某些字段

javascript - 使用 jasmine 进行 jquery 测试

javascript - 如何使用文件哈希或使用它使用 Node JS 将文件下载到服务器

javascript - 将 JSON 对象转换为 protobuf IStruct

javascript - momentjs 查找差异并以特定格式显示