mocha-wav

0.1.2 • Public • Published

mocha-wav

The mocha-wav UI is a third-party mocha UI that enhances the standard Mocha BDD UI to include when(), action(), verify(), and afterVerify() functions. It simplifies building tests where the same actions and assertions should be run against various setup data.

While beforeEach enables you to use the same setup data for all tests, mocha-wav supports the inverse, enabling you to run the same assertions against multiple setup data.

Internally, mocha-wav creates a mocha it for each when defined. This it chains calls to the when, action, and verify functions. This enables you to write multiple test cases that perform the same action and verify logic, but with a different setup (when functions) for each test.

// Pseudocode representing the "it" generated for a single "when" declaration
it("when user is happy", function(done) {
  whenFunction(function(whenResult) {
    actionFunction(whenResult, function(actionResult) {
      verifyFunction(whenResult, actionResult);
      afterVerifyFunction(whenResult, actionResult, done);
    });
  });
});
```
 
# Use
## Install
 
Install the module into your project:
 

npm install mocha-wav --save-dev


Override the default mocha UI by configuring mocha to use the `mocha-wav` UI:

mocha --ui mocha-wav test.js


When using `gulp-mocha`:

var gulp = require('gulp'); var mocha = require('gulp-mocha');

gulp.task('default', function () { return gulp.src('test.js', {read: false}) // gulp-mocha needs filepaths so you can't have any plugins before it .pipe(mocha({ ui: 'mocha-wav', reporter: 'nyan' })); });


## API
​
### action

Only one `action` may be defined within a `describe` context. If more than one is defined, that last one defined is used. The `action` function is asynchronous and should be defined before defining `when` scenarios.

action(function(whenResult, next){

}); ​```

verify

Only one verify may be defined within a describe context. If more than one is defined, that last one defined is used. The verify function is synchronous and should be defined before defining when scenarios.

verify(function (whenResult, actionResult) {
​
});
​```

### afterVerify

Only one `afterVerify` may be defined within a `describe` context. If more than one is defined, that last one defined is used. The `afterVerify` function is asynchronous and should be defined before defining `when` scenarios.

afterVerify(function (whenResult, actionResult, next) { ​ }); ​```

When

Multiple whens may be defined within a describe context. The when functions are asynchronous should be defined after action and verify definitions.

when("something is set", function (next){
​
});

Contribute

No formal process other than the standard opensource flow:​

  • Fork
  • Modify
  • Test
  • Pull Request

Dependencies (2)

Dev Dependencies (1)

Package Sidebar

Install

npm i mocha-wav

Weekly Downloads

0

Version

0.1.2

License

MIT

Last publish

Collaborators

  • tauren