mocha-given
Mocha-given is a mocha interface that helps you write cleaner specs using Given
, When
, Then
and And
.
It is a shameless port of Justin Searls' jasmine-given which is a tribute to Jim Weirich's terrific rspec-given gem.
Example Specs
describe 'assigning stuff to this'->Given -> @number = 24When -> @number++And -> @number *= 2Then -> @number == 50describe 'assigning stuff to variables'->subject = nullGiven -> subject =When -> subjectpush'foo'Then -> subjectlength == 1describe 'Testing deferred'->Given -> @t = DatenowThenafter 1500'so much time has passed'-> Datenow - @t >= 1500describe 'Testing async'->Given -> @subject =Then 'save user' @subjectsavedone;
Run tests
Global installation of mocha
If you have mocha installed globally you need to install mocha-given globally as well.
$ npm install -g mocha mocha-given
Then you can run your tests by setting the interface of mocha to mocha-given
$ mocha -u mocha-given --compilers coffee:coffee-script -R spec
Local installation of mocha
If you have installed mocha and mocha-given locally
$ npm install mocha-given coffee-script
you have to call the mocha binary directly:
$ ./node_modules/.bin/mocha -u mocha-given --compilers coffee:coffee-script -R spec
Run mocha-given tests & start contributing
To run the mocha-given
tests for developing, it has to be symlinked into the node_modules
folder to enable mocha
to resolve mocha-given
.
Therefore run the script:
$ npm run link
Afterwards mocha
has to be installed with $ npm install mocha
.
Now you can run the tests using $ npm tests
and start contributing.
Run tests programmatically
var Mocha = ;var fs = ;var path = ;// require mocha-given after Mocha is set;// the directory with your tests/specsvar testDir = 'tests';// First, you need to instantiate a Mocha instance.var mocha =ui: 'mocha-given'reporter: 'spec';// Get test filesfs;// Now, you can run the tests.mocha;
Run from command line (with mocha and mocha-given installed):
$ node runtests.js
Credits
Thanks to SinnerSchrader for their support and the time to work on this project.