Just a wrapped tap, more fun.
$ npm i -D aya
package.json
{
"scripts": {
"test": "aya test/index.js --coverage"
}
}
test/index.js
const {test} = require('aya')
test.before(() => {
// some setup
})
test('description', async t => {
const result = await getResult()
t.is(result, true)
})
And then
$ npm test
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()
})
})
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.
})
aya
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)
}
The command line interface of aya
is exactly the same as tap
.
For example, if we want to use aya
with codecov
$ npm i -D aya codecov
package.json
{
"scripts": {
"test": "aya test/index.js --coverage",
"posttest": "aya --coverage-report=html && codecov"
}
}
MIT