Given When Then for Mocha
npm install mocha-gwt
Given When Then for mocha
mocha-gwt is a proud rewrite of mocha-given, which is a shameless port of Justin Searls' jasmine-given. As everyone of course knows, ``jasmine-given` is a shameless tribute to Jim Weirichs' terrific rspec-given gem
If you are not aware of any of the mentioned projects, I recommend Justin Searl's video Javascript Testing Tactics and the documentation to `jasmine-given.` In time I will most likely write documentation for this myself.
jasmine-given` for a while but I found myself more and more favouring mocha over jasmine. I find mocha to be a more mature test runner and it seems to have greater performance. I was also bothered by some bugs in `jasmine-given` and mocha-given. Furthermore I wanted to utalize the promise support that exists in mocha. After looking at the code, and figuring out by hand how to write mocha interfaces, I came to the conclusion that a complete re-write where I had full fredom to experiment was the best solution. I now believe that I was right.Differences from jasmine-given and mocha-given
* Promise support. `When -> Promise.resolve('foo').then (@result) =>` will make `@result` available in the following `Then`
* Invariants will fail if you strictly return `false` just like `Then` and `And`
* Invariants are enough to run a test
`
describe 'myFunction', -> When -> @result = myFunction @input
Invariant -> @result == ''
describe 'should return an empty string for undefined input'
Given -> @input = ''
describe 'should return an empty string for null input'
Given -> @input = null
`
Multiple `Then` functions in the same describe will act just like `Then`, `And`, `And...` I.e it will not rerun the `Given` and `When` functions that belong to the suite. This might be changed to follow the standard. But I have myself never encountered a test where non-repetition was not* the desire.Usage
1. Install: `npm i -D mocha-gwt`
2. Run mocha with it: `mocha --ui mocha-gwt`
3. To use with `coffee-script` do `mocha --ui mocha-gwt --require coffee-script --compilers coffee:coffee-script/register``