Testing for sad people
I was once lost, but now I'm found.
- QUnit is awesome. Super stable, well maintained, fast, has handy stuff, and widely used already for browser testing.
- QUnit is simple, yet still extensible. It makes for easier to read, more uniform tests when you have fewer ways of expressing what you are testing.
- Did you see that? qqunit is meant explicitly for testing something in the browser and in node using the same suite. Mocha supports this as well but I find QUnit to be faster and better written.
- Incompatible APIs between 0.4 and 0.6, but if that doesn't matter:
- An unnecessary multiprocess model which makes anything other than
console.logdebugging really hard
- Absurd console output for test runs, without any indication of progress.
- Inability to test data structures with circular references
A simple example:
qqunit = require 'qqunit'tests = globsync"/test/**/*_test.coffee"qqunitRunnerrun tests
you@host $: npm install qqunityou@host $: qqunit test_a.coffee test_b.coffee
glob = require 'glob'path = require 'path'qqunit = require 'qqunit'# Load jquery into windowjqueryPath = pathjoin__dirname'lib''jquery.js'qqunitEnvironmentjsdomjQueryify windowjQueryPathglobal.jQuery = jQuery# Load test helperHelper = require './batman/test_helper'globalk= v for own kv of Helperglobal.MyCoolCode = require '../src/my_cool_code'tests = globsync"/**/*_test.coffee"consolelog "Running test suite. files required."qqunitRunnerrun testsprocessexit statsfailed
qqunit came from me being really, really sad. node-qunit put me in a dark place, but out I have come with less than 100 lines of CoffeeScript which accomplish the same thing. qqunit is stupid simple: run QUnit inside jsdom and add some log statements to show you how it goes in the console.
qqunit is copyright 2012 by Shopify, released under the MIT License (see LICENSE for details).