我正在测试我编写的一个库来限制函数的执行。
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 伪造的。