QUnit Async Example

by HYEONGJINKIM

HTML

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/qunit/2.4.1/qunit.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/qunit/2.4.1/qunit.js"></script>
<div id="qunit"></div>
<div id="qunit-fixture"></div>

JavaScript

QUnit.module("Module A", {
  before: function(assert) {
    // prepare something once for all tests
    assert.ok(true, "before test case");
    var done = assert.async();
    timeout(3000).then(function() {
      console.log('before!');
      done(); // tell QUnit you're good to go.
    });
  },
  beforeEach: function(assert) {
    //every test
    assert.ok(true, "beforeEach test case");
    var done = assert.async();
    timeout(5000).then(function() {
      console.log('beforeEach!');
      done(); // tell QUnit you're good to go.      
    });
  },
  afterEach: function(assert) {
    assert.ok(true, "after test case");
  }
});

QUnit.test("test case 1", function(assert) {
  assert.ok(true, "Module A: in test case 1");
});

QUnit.skip("test case 2", function(assert) {
  assert.ok(true, "Module A: in test case 2");
});

QUnit.test("test case 3", function(assert) {
  assert.ok(true, "Module A: in test case 1");
});

QUnit.module("Module B", function(hooks) {
  hooks.before(function(assert) {
    console.log("Before");
  });

  hooks.after(function(assert) {
    console.log("After");
  });

  QUnit.test("Test A", function(assert) {
    assert.expect(0);
    console.log("Test A ran");
  });

  QUnit.test("Test B", function(assert) {
    assert.expect(0);
    console.log("Test B ran");
  });

  QUnit.test("Test C", function(assert) {
    assert.expect(0);
    console.log("Test C ran");
  });
});

QUnit.module("Module C", {
  before: function(assert) {
    // prepare something once for all tests
    assert.ok(true, "before test case");
    var done = assert.async();
    timeout(3000).then(done);
  },
  beforeEach: function(assert) {
    //every test
    assert.ok(true, "beforeEach test case");    
    timeout(5000).then(assert.async());
  },
  afterEach: function(assert) {
    assert.ok(true, "after test case");
  }
});

QUnit.test("test case 1", function(assert) {
  assert.ok(true, "Module C: in test case 1");
});

QUnit.test("test case 2", function(assert) {
 ...