我有一些设置超时的Ember代码:
var MyObject = Ember.Object.extend({
setFooToBarLater: function() {
Ember.run.later(this, 'set', 'foo', 'bar', 500);
}
});
Run Code Online (Sandbox Code Playgroud)
我想用Sinon的假时钟测试一下.这是我试过的:
var clock = sinon.useFakeTimers();
var myObject = MyObject.create();
myObject.setFooToBarLater();
clock.tick(600);
expect(myObject.get('foo')).to.be('bar');
Run Code Online (Sandbox Code Playgroud)
但expect总是在之前运行set.我也尝试clock.tick在运行循环中包装:
Ember.run(clock, 'tick', 600);
Run Code Online (Sandbox Code Playgroud)
答案似乎不是将 放入clock.tick运行循环中,而是实际调用 的调用Ember.run.later。因此,以下内容确实有效:
var clock = sinon.useFakeTimers();
var myObject = MyObject.create();
Ember.run(myObject, 'setFooToBarLater');
clock.tick(600);
expect(myObject.get('foo')).to.be('bar');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1604 次 |
| 最近记录: |