Mocha Cakes 2
Mocha Cakes is a Gherkin/Cucumber syntax integration for the Mocha testing framework.
Installation
NPM:
npm install --save-dev mocha-cakes-2
Usage
Enable the mocha-cakes-2 integration
To enable the Mocha integration you need to specify mocha-cakes-2
in the ui
option.
CLI
Either use the command line argument:
mocha --ui mocha-cakes-2 path/to/my/tests
Or set it in your mocha.opts
file:
--ui mocha-cakes-2
API
Either pass it in the options as you construct Mocha:
var mocha =ui: 'mocha-cakes-2';
Or set it after you've constructed Mocha:
var mocha = ;mocha
Test structure
; ;
The result will look something like this:

The common Mocha functions (describe
, it
, before
, after
, etc) are also available and can be used together with Mocha Cakes.
Upgrading from version 1.x
Replace the require('mocha-cakes-2')
statement(s) with the --ui mocha-cakes-2
option as described above.
TypeScript
The TypeScript definitions are bundled together with mocha-cakes-2. To use mocha directly with TypeScript you need types for mocha and ts-node.
npm install --save-dev typescript ts-node @types/mocha
You should have a tsconfig.json
in the root of your project like so
Now you can run it like so:
mocha -r ts-node/register --ui mocha-cakes-2 ...
Your tests should look like this:
import 'mocha-cakes-2';
Feature('Some feature', () => {
Scenario('Some Scenario', () => {
let number = 2;
Given('a number', () => {
});
And('that number is 2', () => {
});
When('adding 40', () => {
});
Then('the number should be 42', () => {
});
});
});
API
The Mocha Cakes integration adds the following functions to the global scope:
Feature | feature
Scenario | scenario
Given | given
When | when
Then | then
And | and
But | but
.skip
Skips a test clause. Works on all test functions.
;

.only
Only run the specified test clause. Works on all test functions.
;

beforeEachScenario
and afterEachScenario
Executes the provided function only once for each of the scenarios under the current scope.
;
beforeEachFeature
and afterEachFeature
Executes the provided function only once for each of the features under the current scope.
; ; ; ; // ...
Development
Testing the CLI and API interfaces
If you use Mocha directly to run the tests you can set the MOCHA_INTERFACE
environment variable to either cli
or api
to choose which Mocha interface to run the tests with: MOCHA_INTERFACE=api mocha test/feature/tests.js
.
MOCHA_INTERFACE
will default to cli
if no value is set.
When you run npm run test:cli
or npm run test:api
(or npm test
to run them both), MOCHA_INTERFACE
is set automatically to the appropriate value.
Acknowledgements
Mocha Cakes 2 is heavily influenced by quangv's mocha-cakes.