This is not a catchy post title or usual marketing trick. 2 hours is actually how long it would take to learn QUnit for an average developer (provided you are familiar with JavaScript and web dev basics of course). Well, that's how long it took me to learn. I read the docs (very short and concise), read QUnit tests of some popular jQuery plugins, wrote some tests of my own, and all these got me to the point where I could answer QUnit related questions on StackOverflow.
First, I was planning to cover all the basics of QUnit in this article, but then I thought, getting the message out would yield more positive results. The message that learning everything (and I mean everything) about QUnit testing takes no more than couple of hours. I believe this would make a better impact on jQuery/JavaScript community as a whole. This article will outline the basics and guide you through the optimal learning process (with links to resources).
Let's get started
Learning QUnit at first might be overwhelming. But once you learn that its' API has only 14 methods (and some of them are just negation of others, e.g. equal()
& notEqual()
), the learning process gets more manageable and easy. Here is an overview of those 14 methods mentioned above:
- 8 assertions (
equal()
,notEqual()
,deepEqual()
,notDeepEqual()
,strictEqual()
,notStrictEqual()
,ok()
,throws()
) - 3 assertion organisation methods, also known as test suites in other unit testing frameworks (
module()
,test()
,asyncTest()
) - 3 helper methods to test async methods, such as AJAX, setTimeout(), callbacks, etc. (
expect()
,stop()
,start()
)
This out of the way, we are ready to learn QUnit.
Here are 4 steps that will (1) introduce you to unit testing and QUnit, (2) cover all API methods, (3) show and discuss some common testing scenarios and (4) see how others are using it:
- Read an Introduction to unit testing. The article introduces the idea of unit testing and sets the stage to and introduces QUnit. - 20 min
- Go through those 14 methods we talked about above (assert, async assert, test). The API explanations are very short and to the point. - 30 min
- See some examples of testing javascript and jQuery code using QUnit in the cookbook. - 40 min
- Read and examine some tests on GitHub: - 30 min
- Unit test of QUnit written in QUnit (good place to start);
- jQuery UI unit tests
- jQuery Migrate plugin’s unit tests
Hopefully, you will spend the next 2 hours learning QUnit and your next jQuery plugin/JavaScript code will be covered by tests. Please, help to spread the word and share the link.
PS. In upcoming posts we will cover other testing frameworks such as Mocha and Jasmine (has syntax that resembles Ruby's rspec), object stubbing and mocking with Sinon.JS, and some alternatives to assertions with Chai. Also, to make coding more pleasant we'll cover CoffeeScript as well. So stay tuned: Like us on Facebook, follow on Twitter or subscribe to RSS.