我正在使用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 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 );
});

关于javascript - 多次调用QUnit的assert.async函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39186959/

10-12 07:38