我有一个这样的功能:
function someFunction(...){
...
var remaining = somePositiveValue
while(--remaining){/*ajax stuff*/}
...
return deferredObject;
}
基本上它会在代码中提前加载初始数据。 somePositiveValue
取自该数据并被送入此功能。如上所示,该值控制循环。现在假设somePositiveValue
由于服务器部分的一些不可预见的错误而被返回为0
。代码将无限地中断和循环。尽管如此,很容易追加> 0
。
但在此之前,如何测试函数是否进入无限循环?如何在单元测试中失败?我顺便使用QUnit。单元测试是正确的方式还是有另一种方式?
答案 0 :(得分:1)
如果剩下的剩余可能为零,请将其递减:
while (remaining--)
如果剩余可能是-ve开始做比较而不是隐式布尔值:
while (--remaining > 0)
答案 1 :(得分:0)
如果您正在测试可能变成无限循环的代码,您可以随时强制QUnit停止等待。 例如,在测试结束时添加此行:
asyncTest( "Test that might infinitly loop ", function( assert ) {
// Your test
// ...
// Force stop after 2 secondes
setTimeout(start, 2000); // QUnit < 2.x
});