Given When Then for Mocha

Downloads in past


0.2.25 years ago9 years agoMinified + gzip package size for mocha-gwt in KB


Build Status
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.
Why yet another "given"-project?
I have been using jasmine and ``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.
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``