This node.js module makes the wonderful Pivotal Lab's jasmine spec framework available in node.js.
1.3.1 of Jasmine is currently included with node-jasmine. This is a forked version from the
Karma project, which allows you to use the
iit functions to run individual suites or specs.
2.0.0 Support is available in the
--growlflag (requires Growl to be installed)
--configflag that allows you to assign variables to process.env
afterEachis available in requirejs #179
describeblocks much more accurately!
--coffeenow allows specs written in Literate CoffeeScript (
To install the latest official version, use NPM:
npm install jasmine-node -g
To install the latest bleeding edge version, clone this repository and check
Write the specifications for your code in
*.coffee files in the
You can use sub-directories to better organise your specs. In the specs use
it() etc. exactly
as you would in client-side jasmine specs.
Note: your specification files must be named as
which matches the regular expression
otherwise jasmine-node won't find them!
sampleSpecs.js is wrong,
sampleSpec.js is right.
If you have installed the npm package, you can run it with:
If you aren't using npm, you should add
pwd/lib to the
environment variable, then run:
You can supply the following arguments:
--autotest, provides automatic execution of specs after each change
--watch, when used with
--autotest, paths after
--watchwill be watched for changes, allowing to watch for changes outside of specs directory
--coffee, allow execution of
--color, indicates spec output should uses color to indicates passing (green) or failing (red) specs
--noColor, do not use color in the output
-m, --match REGEXP, match only specs containing "REGEXPspec"
--matchall, relax requirement of "spec" in spec file names
--verbose, verbose output as the specs are run
--junitreport, export tests results as junitreport xml format
--output FOLDER, defines the output folder for junitreport files
--teamcity, converts all console output to teamcity custom test runner commands. (Normally auto detected.)
--growl, display test run summary in a growl notification (in addition to other outputs)
--runWithRequireJs, loads all specs using requirejs instead of node's native require method
--requireJsSetup, file run before specs to include and configure RequireJS
--test-dir, the absolute root directory path where tests are located
--nohelpers, does not load helpers
--forceexit, force exit once tests complete
--captureExceptions, listen to global exceptions, report them and exit (interferes with Domains in NodeJs, so do not use if using Domains as well
--config NAME VALUE, set a global variable in
--noStack, suppress the stack trace generated from a test failure
Individual files to test can be added as bare arguments to the end of the args.
jasmine-node --coffee spec/AsyncSpec.coffee spec/CoffeeSpec.coffee spec/SampleSpec.js
jasmine-node includes an alternate syntax for writing asynchronous tests. Accepting
a done callback in the specification will trigger jasmine-node to run the test
asynchronously waiting until the
done() callback is called.
var request = require'request';it"should respond with hello world"request""expectbodytoEqual"hello world";done;;;
An asynchronous test will fail after
5000 ms if
done() is not called. This timeout
can be changed by setting
jasmine.getEnv().defaultTimeoutInterval or by passing a timeout
interval in the specification.
var request = require'request';it"should respond with hello world"request""done;;250; // timeout after 250 ms
var request = require'request';jasminegetEnvdefaultTimeoutInterval = 500;it"should respond with hello world"request""done;; // timeout after 500 ms;
spec/SampleSpecs.js to see how to use it.
There is a sample project in
/spec-requirejs. It is comprised of:
requirejs-setup.js, this pulls in our wrapper template (next)
requirejs-wrapper-template, this builds up requirejs settings
requirejs.sut.js, this is a __SU__bject To __T__est, something required by requirejs
requirejs.spec.js, the actual jasmine spec for testing
To run it:
node lib/jasmine-node/cli.js --runWithRequireJs --requireJsSetup ./spec-requirejs/requirejs-setup.js ./spec-requirejs/
Often you'll want to capture an uncaught exception and log it to the console,
this is accomplished by using the
--captureExceptions flag. Exceptions will
be reported to the console, but jasmine-node will attempt to recover and
continue. It was decided to not change the current functionality until
until then, jasmine-node will still return
0 and continue on without this flag.
You require a module, but it doesn't exist, ie
require('Q') instead of
require('q'). Jasmine-Node reports the error to the console, but carries on
0. This messes up Travis-CI because you need it to return a
non-zero status while doing CI tests.
> jasmine-node --coffee spec> echo $status0
Run jasmine node with the
> jasmine-node --coffee --captureExceptions spec> echo $status1
Jasmine node can display Growl notifications of test
run summaries in addition to other reports.
Growl must be installed separately, see node-growl
for platform-specific instructions. Pass the
--growl flag to enable the notifications.
Install the dependent packages by running:
Run the specs before you send your pull request:
Note: Some tests are designed to fail in the specs.sh. After each of the individual runs completes, there is a line that lists what the expected Pass/Assert/Fail count should be. If you add/remove/edit tests, please be sure to update this with your PR.
ddescribe(thanks to mgcrea)
stdout.write(thanks to nrstott)
--growl(thanks to AlphaHydrae)
afterEachnow properly handle the async-timeout function
--watchfeature (thanks to davegb3)
0.6(thanks to abe33)
--configflag for changeable testing environments
--autotestnow works as expected, jasmine clock now responds to the fake ticking as requested, and removed the path.exists warning
1.3.1, fixed fs missing, catching uncaught exceptions, other fixes