QUnit is a powerful, easy-to-use JavaScript unit testing framework used across projects like jQuery, jQuery UI, and Ember.js.
Basic Test Suite Structure
QUnit.module('Math operations', (hooks) => {
hooks.beforeEach(() => {
// Setup before each test
});
hooks.afterEach(() => {
// Teardown after each test
});
QUnit.test('adds two numbers', (assert) => {
assert.equal(1 + 1, 2, '1 + 1 should equal 2');
assert.strictEqual(2 + 2, 4, 'strictly equals 4');
});
});
Assertion Reference
| Assertion | Description |
|---|---|
assert.ok(state, [message]) |
Asserts value is truthy |
assert.notOk(state, [message]) |
Asserts value is falsy |
assert.equal(actual, expected) |
Non-strict comparison (==) |
assert.strictEqual(actual, expected) |
Strict comparison (===) |
assert.deepEqual(actual, expected) |
Deep recursive equality on objects/arrays |
assert.throws(fn, [expected]) |
Asserts a function throws an error |
Asynchronous Tests
Modern Promise / Async Await
QUnit.test('fetches user profile', async (assert) => {
const profile = await fetchProfile(10);
assert.equal(profile.name, 'Alice');
});
Callback Done Handler
QUnit.test('timer test', (assert) => {
const done = assert.async();
setTimeout(() => {
assert.ok(true, 'Timer completed');
done();
}, 100);
});