我如何测试 Promise 从未实现?
How can I test that a Promise is never fulfilled?
我正在测试我编写的用于限制函数执行的库。
API 是 throttler.do(fn) 并且它 return 是 fn 的 return 值的承诺(在节流器决定可以 运行它)。
我正在使用 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伪造的
您可以将 Promise 模拟为同步,然后检查 Promise 状态。这是您可以使用的库 promise-sync
我正在测试我编写的用于限制函数执行的库。
API 是 throttler.do(fn) 并且它 return 是 fn 的 return 值的承诺(在节流器决定可以 运行它)。
我正在使用 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伪造的
您可以将 Promise 模拟为同步,然后检查 Promise 状态。这是您可以使用的库 promise-sync