https://blog.kevinchisholm.com/javascript/getting-started-with-javascript-unit-testing-and-jquery-qunit/
http://examples.kevinchisholm.com/javascript/unit-testing/qunit/part-i/
The key to writing testable code is to produce small modules of functionality that always return a predictable result.
https://learn.microsoft.com/en-us/archive/msdn-magazine/2015/may/modern-apps-end-to-end-testing-in-modern-web-sites-and-apps
example:
<!DOCTYPE html>
<meta charset="utf-8">
<title>Test Suite</title>
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.20.0.css">
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="https://code.jquery.com/qunit/qunit-2.20.0.js"></script>
</body>
<script>
function add(a, b) {
return a + b;
}
function badFunction() {
return false;
}
function square(x) {
return x * x;
}
function fetchSquare(x) {
return new Promise(function (resolve) {
setTimeout(function () {
resolve(x * x);
}, 5000);
});
}
function isEven(x)
{
return x%2 === 0;
}
QUnit.module('add', function () {
QUnit.test('two numbers', function (assert) {
assert.equal(add(1, 2), 3);
});
});
QUnit.module('bad function', function () {
QUnit.test('bad function', function (assert) {
assert.notOk(badFunction(), "bad function failed");
})
});
QUnit.test('square()', function (assert) {
assert.equal(square(2), 4);
assert.equal(square(3), 9);
})
//});
QUnit.module('bad functi22on', function () {
QUnit.test('bad func22tion', function (assert) {
assert.notOk(badFunction(), "bad function failed");
})
});
QUnit.test('Test with Promise', function (assert) {
return fetchSquare(3).then(function (result) {
assert.equal(result, 9);
});
});
QUnit.test.each('isEven()', [2,3,6], (assert, data) => {
assert.true(isEven(data), `${data} is even`);
})
QUnit.test('is 3 not Even()', function (assert) {
assert.notOk(isEven(3), '3 is not even indeed');
})
</script>
No comments:
Post a Comment