【发布时间】:2016-03-22 16:37:55
【问题描述】:
我正在测试我编写的用于限制函数执行的库。
API 是throttler.do(fn),它返回 fn 的返回值的承诺(在限制器决定可以运行它的任何时候解决)。
我使用lolex 来伪造Date() 和setTimeout,所以如果我将节流阀设置为每分钟允许两个操作并执行
throttler.do(() => {});
throttler.do(() => {});
throttler.do(() => {}).should.eventually.equal(5);
这如预期的那样失败(它超时,因为它一直在等待最后一个承诺,因为我从来没有打电话给lolex.tick)。
有没有办法可以把它变成通过测试,比如
throttler.do(() => {}).should.never.be.fulfilled;
我做不到
setTimeout(() => done(), 1500)
因为 setTimeout 方法是 lolex 伪造的。
【问题讨论】:
标签: javascript testing promise mocha.js chai-as-promised