Waiting in QUnit tests
using the QUnit assert object you can do
test("async test", function (assert) {
var done = assert.async();
setTimeout(function() {
delayedPartOfTest();
done();
}, 20000);
})
});
Your test should look something like this.
test('asynchronous test', function() {
stop(); // Pause the test
//Add your wait
setTimeout(function() {
//Make assertion
ok(true);
// After the assertion called, restart the test
start();
}, 1000);
});
UPD: In QUnit 2.x functions start() and stop() are gone. It is recommended to use assert.async()
instead. Updated code looks like:
test('asynchronous test', function() {
var done = assert.async();
//Add your wait
setTimeout(function() {
//Make you assertion
ok(true);
// Tell QUnit to wait for the done() call inside the timeout.
done();
}, 1000);
});
You could use the promise
function to fire a callback once all animations for an element are finished. This implies that you need to know on what elements the animations are run on in the test (but you don't need to know how long the animation is).
- Example here: http://jsfiddle.net/4RqaA/1/
- Doc here: http://api.jquery.com/promise/