tape-plus
v1.0.0
Published
Nested tape tests with before/after, async, and promise support
Downloads
83
Maintainers
Readme
tape-plus
Nested tape tests with before/after, async, and promise support
tape-plus is a wrapper for tape for a batteries-included experience for writing elegant tape tests. It provides a user-friendly API modelled after Mocha.
Install
tape is a peer dependency of tape-plus. Install them together.
npm install --save-dev tape tape-plus
Usage
Use require('tape-plus')
as a substitute for require('tape')
. The only difference is you don't need to use t.end()
anymore.
var test = require('tape-plus')
test('adding numbers', t => {
t.equal(10, 10)
})
Grouped tests
Use test.group
to define test groups.
var group = require('tape-plus').group
group('add()', test => {
test('adding', t => {
t.equal(add(1, 1), 2)
})
test('subtracting', t => {
t.equal(add(10, -1), 9)
})
})
Nested groups
You can also make groups within groups. Just call test.group
again.
var group = require('tape-plus').group
group('add()', test => {
test.group('adding', test => {
test('positive numbers', t => {
t.equal(add(10, 10), 20)
})
test('negative numbers', t => {
t.equal(add(-10, -10), -20)
})
})
})
Before/after hooks
Use test.beforeEach
and test.afterEach
to add hooks.
var group = require('tape-plus').group
group('add()', test => {
var base
test.beforeEach(t => {
base = 10
})
test.afterEach(t => {
// ...
})
test('adds numbers', t => {
t.equal(add(base, 1), 11)
})
test('subtracts numbers', t => {
t.equal(add(base, -1), 9)
})
})
Asynchronous tests
Pass a second parameter to test()
and it'll be a callback, Mocha-style.
var group = require('tape-plus').group
group('add()', test => {
var base
test('async callback', (t, next) => {
setTimeout(() => {
t.equal(1, 1)
next()
})
})
})
Promises
Return a promise from inside a test()
block. Rejected promises will be an error.
var group = require('tape-plus').group
test('async callback', t => {
return fetch('http://site.com')
.then(data => {
t.equal(data, '<html></html>')
})
})
BDD interface
test.describe
is an alias for test.group
.
var describe = require('tape-plus').describe
describe('add()', it => {
it('adds numbers', t => {
t.equal(add(1, 1), 2)
})
it('subtracts numbers', t => {
t.equal(add(10, -1), 9)
})
})
With other tape wrappers
tape-plus is implemented as a decorator, so you can mix it in with other stuff. Here's an example with extend-tape.
var test = require('tape')
test = require('extend-tape')(tape, { /*...*/ })
test = require('tape-plus/wrap')(tape)
Thanks
tape-plus © 2016+, Rico Sta. Cruz. Released under the MIT License. Authored and maintained by Rico Sta. Cruz with help from contributors (list).
ricostacruz.com · GitHub @rstacruz · Twitter @rstacruz