JavaScript Unit Testing: QUnit, Jasmine, Coverage, and Automation

Table of Contents

1. Unit Tests

1.1. QUnit

Why not Jasmine, YUITest, etc.

1.2. Application setup

  • Stand-alone
  • YUITest
  • PhantomJS is universally required

2. Coverage

2.1. AST: Esprima

corrected · pilot-annotation-pass · 2026-10-08

http://esprima.org/

   A JavaScript tokenizer / parser / beautifier / compressor.

   This version is suitable for Node.js.  With minimal changes (the
   exports stuff) it should work on any JS platform.

   This file contains the tokenizer/parser.  It is a port to JavaScript
   of parse-js [1], a JavaScript parser library written in Common Lisp
   by Marijn Haverbeke.  Thank you Marijn!

   [1] http://marijn.haverbeke.nl/parse-js/

Note: the quote above is UglifyJS's parser header.

2.2. Static: node-cover

correct · pilot-annotation-pass · 2026-10-08

See Itay's talk on this from http://www.meetup.com/Seattle-Node-js/events/59999252/

https://github.com/itay/node-cover

See also

http://tntim96.github.com/JSCover/

2.3. Build: grunt-coverjs

corrected · pilot-annotation-pass · 2026-10-08

https://github.com/jgrund/grunt-coverjs

   $ grunt cover
   if (typeof __$coverObject === "undefined"){
        if (typeof window !== "undefined") window.__$coverObject = {};
        else if (typeof global !== "undefined") global.__$coverObject = {};
        else throw new Error("cannot find the global scope");
   }