Code Monkey home page Code Monkey logo

jasmine-node's Introduction

jasmine-node

Build Status

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.

what's new

  • Ability to test specs written in Literate Coffee-Script
  • 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!
  • --coffee now allows specs written in Literate CoffeeScript (.litcoffee)

install

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 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, .spec.coffee or .spec.litcoffee; 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 spec/

If you aren't using npm, you should add pwd/lib to the $NODE_PATH environment variable, then run:

node lib/jasmine-node/cli.js

You can supply the following arguments:

  • --autotest, provides automatic execution of specs after each change
  • --coffee, allow execution of .coffee and .litcoffee 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 --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:

  1. requirejs-setup.js, this pulls in our wrapper template (next)
  2. requirejs-wrapper-template, this builds up requirejs settings
  3. requirejs.sut.js, this is a __SU__bject To __T__est, something required by requirejs
  4. requirejs.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.7.0 - Literate Coffee-Script now testable (thanks to magicmoose)
  • 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

jasmine-node's People

Contributors

abe33 avatar adomokos avatar aoberoi avatar asalant avatar booo avatar codingfabian avatar daomry avatar eboto avatar flygsand avatar jdewind avatar jdiamond avatar jeffwatkins avatar jimmycuadra avatar ken39arg avatar kevinoid avatar matthiasg avatar mcollina avatar mhevery avatar mikelehen avatar misteroneill avatar mtscout6 avatar nemilya avatar nfriedly avatar openhoat avatar ralf-cestusio avatar tebriel avatar theraven avatar theycallmeswift avatar timbertson avatar vojtajina avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.