如何测试Promise永远不会实现?

时间:2016-03-22 16:37:56

标签: javascript testing promise mocha chai-as-promised

我正在测试我编写的库以限制函数的执行。

API是throttler.do(fn),它返回fn返回值的承诺(在限制器决定运行它的任何时候解析)。

我使用lolex假冒throttler.do(() => {}); throttler.do(() => {}); throttler.do(() => {}).should.eventually.equal(5); lolex.tick所以如果我设置限制器允许每分钟两次动作并且

throttler.do(() => {}).should.never.be.fulfilled;

这种情况按预期失败了(它超时了,因为它永远等待最后的承诺,因为我从来没有打过setTimeout(() => done(), 1500) )。

有没有办法可以把它变成通过测试,比如

Selector("funcName")

我无法做到

#selector(ClassName.funcName)

因为setTimeout方法是由lolex伪造的。

1 个答案:

答案 0 :(得分:0)

您可以将Promise模拟为同步,然后检查Promise状态。这是一个可以使用promise-sync

的库