Tuesday, May 14, 2024

QUnit

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