Jasmine等到侦听器调用的函数被执行

时间:2016-07-31 21:21:42

标签: javascript testing backbone.js jasmine

所以我有这个函数,当设置了一些骨干模型属性时调用它。即:

this.listenTo(model, "change:someattr", changeCallback);

我想在Jasmine测试中做的是设置此属性,然后检查changeCallback是否成功调用,以及是否导致了所需的更改。在下面的代码中,看起来我的changeCallback函数在执行jasmine断言后被调用。

that.model.set('someattr', 'xyz');
expect(that.model.changeCallback).toHaveBeenCalled();

任何想法如何测试?我发现的所有代码示例都处理了直接在异步函数上执行的asych调用。

1 个答案:

答案 0 :(得分:0)

模型更改回调将立即发生,因为没有服务器响应等待:

  1. 监视changeCallback并致电(http://jasmine.github.io/2.4/introduction.html#section-Spies:_ and.callThrough)。
  2. model.set(" attributeToChange"," somethingNew")
  3. 断言changeCallback间谍被称为
  4. 断言发生了预期的行为。
  5. 或者,你可以分成两个测试,其中一个只测试改变属性触发了回调,另一个测试了回调函数本身。