wheredoc
v0.0.9
Published
ES6-friendly version of where.js, data-table-driven support module for JavaScript test libraries.
Downloads
18
Maintainers
Readme
wheredoc
Use docstring-like data tables in JavaScript tests, similar to Cucumber's Scenario Outline Examples:
or Spock where:
blocks.
describe("Using Mocha and Chai.expect", (done) => {
function spec(a, b, c) {
expect(c).to.equal(a + b)
where: `
a | b | c
1 | 2 | 3
4 | -5 | -1
`;
}
where(spec).forEach({ params, test } => {
var { a, b, c } = params
it(`${c} should equal ${a} + ${b}.`, test)
})
done()
})
Scenarios
The where(spec)
call returns an array of scenarios (or errors - more on that elsewhere). A scenario contains a params
map of key-value pairs, and a test
function.
In cases where the testing library uses a flattened pattern, such as QUnit, and Tape, you can define the test name or message in the spec or test function itself, and call the scenario test directly in the iteration callback.
In cases where the testing library uses the describe-it pattern, such as Mocha and Jasmine, you can define the test name in each scenario iteration function, then pass both the name and the test function, e.g., as it(name, test)
.
Read more about this in the library examples document.
Requirements
ES2015 module support (i.e., JavaScript import
statements):
- Node.js: version 14, see details at https://nodejs.org/api/esm.html
- Browsers: All but Internet Explorer, see table at https://caniuse.com/mdn-javascript_statements_import
Install
- from npm:
npm install wheredoc
- from github:
git clone https://github.com/dfkaye/wheredoc.git
Main test suite
Created on Node.js, version 14.13.0, using Mocha 8.1.3 and Chai 4.2.0.
Run with npm test
Example suites on Node.js
These have both passing and failing examples.
- mocha (using chai):
npm run mocha-node
- qunit (using qunit-tap):
npm run qunit-node
- tape (using tape-describe):
npm run tape
Browser example suites
The browser suites run with live-server and download the testing libraries from https://unpkg.com. You should install live-server globally, npm install -g live-server
, before running these examples.
These have both passing and failing examples.
- mocha (using chai):
npm run mocha
- qunit:
npm run qunit
Further Documentation
- Details about prior art, redesign, defining specs, handling scenarios
- Examples with different testing libraries
- Node.js interop between ES2015 modules and CommonJS.
- Data table value types
- Status, progress, to-do list