tape-plus

1.0.0 • Public • Published

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

Package Sidebar

Install

npm i tape-plus

Weekly Downloads

9

Version

1.0.0

License

MIT

Last publish

Collaborators

  • rstacruz