Simple Grunt task that runs QUnit tests in Node.js
This plugin requires Grunt >=0.4.0
.
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-qunit-node --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-qunit-node');
This plugin has a peer dependency on qunitjs
in version ^2.0.0
. If you haven't already installed it, run this command:
npm install qunitjs --save-dev
In your project's Gruntfile, add a section named qunit-node
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
'qunit-node': {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific file lists and/or options go here.
},
},
});
Type: Function
Default value: function (QUnit) { }
Specify a callback function which will be called before QUnit starts the tests.
This grunt task doesn't log individual test or module results, just the end result.
Therefore, it is a good place to register callbacks on the QUnit
argument, e.g. with QUnit.on(...)
.
See callbacks/QUnit.on for details.
Type: any
Any other property of the config
object will be directly set on QUnit.config
.
See config/QUnit.config for details.
In your package.json
:
...,
"devDependencies": {
"grunt": "^1.0.1",
"grunt-qunit-node": "^0.1.0",
"qunitjs": "^2.3.0"
},
"scripts": {
"test": "grunt test"
},
...
Install
$ npm install
In your Gruntfile.js
:
var inspect = require('util').inspect,
EOL = require('os').EOL;
module.exports = function (grunt) {
grunt.initConfig({
'qunit-node': {
options: {
noglobals: true
},
test: {
src: 'test/qunit-node-fixture.js',
options: {
requireExpects: true,
setup: function (qunit) {
qunit.on('testEnd', function (testEnd) {
testEnd.errors.forEach(function (error) {
var actual = inspect(error.actual),
expected = inspect(error.expected),
reason = 'Actual value ' + actual + ' does not match expected value ' + expected,
message = 'Description: ' + error.message + EOL +
'Reason: ' + reason + EOL +
'Stack: ' + error.stack;
grunt.log.errorlns(message);
});
});
}
}
}
}
});
grunt.loadNpmTasks('grunt-qunit-node');
grunt.registerTask('test', ['qunit-node:test']);
};
In test/qunit-node-fixture.js
:
QUnit.test('a basic test example', function (assert) {
assert.expect(1);
var value = 'hello';
assert.equal(value, 'hello', 'We expect value to be hello');
});
Run the tests
$ npm test
$ git clone https://github.com/mucaho/grunt-qunit-node.git
$ cd grunt-qunit-node
$ npm install
Modify code.
Add unit tests for any new or changed functionality.
$ npm test
0.0.1: Initial version