Bootstrap uses QUnit, a powerful, easy-to-use JavaScript unit test framework. Each plugin has a file dedicated to its tests in unit/<plugin-name>.js
.
unit/
contains the unit test files for each Bootstrap plugin.vendor/
contains third-party testing-related code (QUnit and jQuery).visual/
contains “visual” tests which are run interactively in real browsers and require manual verification by humans.To run the unit test suite via PhantomJS, run grunt test-js
.
To run the unit test suite via a real web browser, open index.html
in the browser.
unit/<plugin-name>.js
).grunt test-js
to see the results of your newly-added test(s).Note: Your new unit tests should fail before your changes are applied to the plugin, and should pass after your changes are applied to the plugin.
assert.expect
to ensure that the expected assertions are run.// Synchronous test QUnit.test('should describe the unit being tested', function (assert) { assert.expect(1) var templateHTML = '<div class="alert alert-danger fade in">' + '<a class="close" href="#" data-dismiss="alert">×</a>' + '<p><strong>Template necessary for the test.</p>' + '</div>' var $alert = $(templateHTML).appendTo('#qunit-fixture').bootstrapAlert() $alert.find('.close').click() // Make assertion assert.strictEqual($alert.hasClass('in'), false, 'remove .in class on .close click') }) // Asynchronous test QUnit.test('should describe the unit being tested', function (assert) { assert.expect(1) var done = assert.async() $('<div title="tooltip title"></div>') .appendTo('#qunit-fixture') .on('shown.bs.tooltip', function () { assert.ok(true, '"shown" event was fired after calling "show"') done() }) .bootstrapTooltip('show') })