1.1.0 • Published 7 years ago
piapia v1.1.0
piapia

Just a wrapped tap, more fun.
Install
$ npm i -D piapiaUsage
package.json
{
"scripts": {
"test": "piapia test/index.js --coverage"
}
}test/index.js
const {test} = require('piapia')
test.before(() => {
// some setup
})
test('description', async t => {
const result = await getResult()
t.is(result, true)
})And then
$ npm testt.end() only in test.cb
Unlike tap, we should only use t.end() in test.cb.
test.cb('test result with callback', t => {
getResult(result => {
t.is(result, true)
t.end()
})
})t.end() is NO MORE necessary for test
test('sync test', t => {
const result = getSyncResult()
t.is(result, true)
})
test('async test', async t => {
const result = await getAsyncResult()
t.is(result, true)
// t.end() here is useless and has no effect.
})Lifecycles
piapia supports FOUR lifecycle methods which are listed below according to the executing sequence:
test.before(fn)test.beforeEach(fn)test.afterEach(fn)test.after(fn)
// Both sync and async functions are supported
test.before(async t => {
await startServer()
// We could do assertions inside lifecycle methods
t.is(await getServerPort(), 8080)
})We could also define lifecycle methods by using setters:
test.before = async t => {
await startServer()
t.is(await getServerPort(), 8080)
}Command Line
The command line interface of piapia is exactly the same as tap.
For example, if we want to use piapia with codecov
$ npm i -D piapia codecovpackage.json
{
"scripts": {
"test": "piapia test/index.js --coverage",
"posttest": "piapia --coverage-report=html && codecov"
}
}License
MIT