调用QUnit's断言.多次Async函数

Calling QUnit's assert.async function multiple times

本文关键字:断言 多次 Async 函数 QUnit 调用      更新时间:2023-09-26

我使用QUnit来测试一个javascript库,我需要验证一个回调是否被调用了不止一次。根据QUnit文档(在http://api.qunitjs.com/async/),类似这样的简化测试用例应该可以工作:

QUnit.test("assert.async with argument", function (assert) {
var done = assert.async(3);
done();
done();
done();
});

然而,上面抛出异常,Called the callback returned from assert.async more than once .

我不得不求助于构建done()函数数组,然后弹出每个函数并调用它。没那么好。

更新

在将QUnit升级到2.0.1时,上面的代码将正常工作(对发出的0个断言的投诉取模)。我使用的是1.18版本

更新

OP在下面评论,他只需要升级QUnit!

我有一个JS小提琴,你可以看到这个异步工作(与setTimeout)和一个没有(你的例子)。

下面是一个使用setTimeout的例子(无论如何使用QUnit 2.0.1):

QUnit.test( "multiple call done()", function( assert ) {
  var done = assert.async( 2 );
  setTimeout(function() {
    assert.ok( true, "first call done." );
    done();
  }, 500 );
  setTimeout(function() {
    assert.ok( true, "second call done." );
    done();
  }, 500 );
});