多次调用QUnit的assert.async函数

时间:2016-08-28 00:24:26

标签: javascript qunit

我正在使用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版本。

1 个答案:

答案 0 :(得分:2)

<强>更新

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

...

我有一个JS fiddle,您可以在其中看到异步(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 );
});
相关问题