QUnit testing framework for nodejs.
http://github.com/jquery/qunit
Features
- cli
- testrunner api
- test coverage via istanbul
- tests inside of one testfile run synchronous, but every testfile runs parallel
- tests from each file run in its own spawned node process
- same API for client and server side code (original QUnit is used)
- the simplest API of the world, especially for asynchronous testing
- you can write tests in TDD or BDD style depending on your task and test type
- you can run the same tests in browser if there is no dependencies to node
- generators support
Installation
$ npm i qunit
API
http://api.qunitjs.com
The only exception
// Separate tests into modules.// Use `QUnit` namespace, because `module` is reserved for node.QUnit
Usage
Command line
Read full cli api doc using "--help" or "-h":
$ qunit -h $ qunit -c ./code.js -t ./tests.js
By default, code and dependencies are added to the global scope. To specify requiring them into a namespace object, prefix the path or module name with the variable name to be used for the namespace object, followed by a colon:
$ qunit -c code:./code.js -d utils:utilmodule -t ./time.js
via api
var testrunner = ; // Defaults: // logging options log: // log assertions overview assertions: true // log expected and actual values for failed tests errors: true // log tests overview tests: true // log summary summary: true // log global summary (all files) globalSummary: true // log coverage coverage: true // log global coverage (all files) globalCoverage: true // log currently testing code file testing: true // run test coverage tool coverage: false // define dependencies, which are required then before code deps: null // define namespace your code will be attached to on global['your namespace'] namespace: null // max amount of ms child can be blocked, after that we assume running an infinite loop maxBlockDuration: 2000
// change any option for all tests globallytestrunneroptionsoptionName = value; // or use setup functiontestrunner; // one code and tests filetestrunner; // require code into a namespace object, rather than globallytestrunner; // one code and multiple tests filetestrunner; // array of code and test filestestrunner; // using testrunner callbacktestrunner; // specify dependencytestrunner; // dependencies can be modules or filestestrunner; // dependencies can required into a namespace objecttestrunner; // specify multiple dependenciestestrunner;
Writing tests
QUnit API and code which have to be tested are already loaded and attached to the global context.
Some tests examples
; QUnit; ; ; QUnit; ; QUnit; ; ;
Generators support
;
Run tests
$ npm i$ npm test
Coverage
Code coverage via Istanbul.
To utilize, install istanbul
and set option coverage: true
or give a path where to store report coverage: {dir: "coverage/path"}
or pass --cov
parameter in the shell.
To specify the format of coverage report pass reporters array to the coverage options: coverage: {reporters: ['lcov', 'json']}
(default)
Coverage calculations based on code and tests passed to node-qunit
.