jasmine-node-karma
v1.6.1
Published
DOM-less simple JavaScript BDD testing framework for Node
Downloads
83
Readme
jasmine-node
This node.js module makes the wonderful Pivotal Lab's jasmine (http://github.com/pivotal/jasmine) spec framework available in node.js.
jasmine
Version 1.3.1 of Jasmine is currently included with node-jasmine. This is a forked version from the
Karma project: (https://github.com/karma-runner/karma-jasmine), which allows you to use the
ddescribe
and iit
functions to run individual suites or specs.
what's new
- Using jasmine forked from karma.
- Teamcity Reporter reinstated.
- Ability to specify multiple files to test via list in command line
- Ability to suppress stack trace with --noStack
- Async tests now run in the expected context instead of the global one
- --config flag that allows you to assign variables to process.env
- Terminal Reporters are now available in the Jasmine Object #184
- Done is now available in all timeout specs #199
- afterEach is available in requirejs #179
- Editors that replace instead of changing files should work with autotest #198
- Jasmine Mock Clock now works!
- Autotest now works!
- Using the latest Jasmine!
- Verbose mode tabs describe blocks much more accurately!
install
To install the latest official version, use NPM:
npm install jasmine-node-karma -g
To install the latest bleeding edge version, clone this repository and check
out the beta
branch.
usage
Write the specifications for your code in *.js and *.coffee files in the spec/ directory (note: your specification files must end with either .spec.js or .spec.coffee; otherwise jasmine-node won't find them!). You can use sub-directories to better organise your specs.
If you have installed the npm package, you can run it with:
jasmine-node-karma spec/
If you aren't using npm, you should add pwd
/lib to the $NODE_PATH
environment variable, then run:
node lib/jasmine-node-karma/cli.js
You can supply the following arguments:
- --autotest, provides automatic execution of specs after each change
- --coffee, allow execution of .coffee specs
- --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 comtaining "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.)
- --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 process.env
- --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.
Example:
jasmine-node-karma --coffee spec/AsyncSpec.coffee spec/CoffeeSpec.coffee spec/SampleSpecs.js
async tests
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.
it("should respond with hello world", function(done) {
request("http://localhost:3000/hello", function(error, response, body){
expect(body).toEqual("hello world");
done();
});
});
An asynchronous test will fail after 5000 ms if done() is not called. This timeout can be changed by setting jasmine.DEFAULT_TIMEOUT_INTERVAL or by passing a timeout interval in the specification.
it("should respond with hello world", function(done) {
request("http://localhost:3000/hello", function(error, response, body){
done();
}, 250); // timeout after 250 ms
});
Checkout spec/SampleSpecs.js to see how to use it.
requirejs
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 settingsrequirejs.sut.js
, this is a __SU__bject To __T__est, something required by requirejsrequirejs.spec.js
, the actual jasmine spec for testing
development
Install the dependent packages by running:
npm install
Run the specs before you send your pull request:
specs.sh
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.
changelog
- 1.6.0 - Teamcity Reporter Reinstated (thanks to bhcleek)
- 1.5.1 - Missing files and require exceptions will now report instead of failing silently
- 1.5.0 - Now takes multiple files for execution. (thanks to abe33)
- 1.4.0 - Optional flag to suppress stack trace on test failure (thanks to Lastalas)
- 1.3.1 - Fixed context for async tests (thanks to omryn)
- 1.3.0 - Added --config flag for changeable testing environments
- 1.2.3 - Fixed #179, #184, #198, #199. Fixes autotest, afterEach in requirejs, terminal reporter is in jasmine object, done function missing in async tests
- 1.2.2 - Revert Exception Capturing to avoid Breaking Domain Tests
- 1.2.1 - Emergency fix for path reference missing
- 1.2.0 - Fixed #149, #152, #171, #181, #195. --autotest now works as expected, jasmine clock now responds to the fake ticking as requested, and removed the path.exists warning
- 1.1.1 - Fixed #173, #169 (Blocks were not indented in verbose properly, added more documentation to address #180
- 1.1.0 - Updated Jasmine to 1.3.1, fixed fs missing, catching uncaught exceptions, other fixes