basictap
Light tap adherent test runner.
- Asyncronous tests run in parallel
- Outputs tap syntax
- Uses built in node
assert
library
Installation
npm install --save basictap
Features
test.only('will only run this (and other only) tests', t => {});
test.skip('will not run this (or other skip) test', t => {});
test.todo('will not run and will remind you at the end')
test('will run', t => {});
Assertions
Adheres and uses the built in assert library from node.
t.plan(1) // number of expected assertions
t.timeout(1000) // in milliseconds
t.waitFor(() => true), { timeout: 500 }) // continuously try until passes or timesout (in milliseconds)
t.pass()
t.fail()
t.ok(true)
t.notOk(null)
t.equal('test', 'test')
t.notEqual('test', 'no')
t.deepEqual({ a: 1 }, { a: 1 })
t.notDeepEqual({ a: 1 }, { a: 2 })
t.deepStrictEqual({ a: 1 }, { a: 1 })
t.notDeepStrictEqual({ a: 1 }, { a: 2 })
t.strictEqual('test', 'test')
t.notStrictEqual('test', 'no')
t.throws(result, new Error('oh noes'))
t.rejects(result, new Error('oh noes'))
t.doesNotThrow(result, new Error('oh noes'))
t.doesNotReject(result, new Error('oh noes'))
t.match('I will pass', /pass/);
t.doesNotMatch('I will fail', /pass/);
Example
const test = require('basictap');
// default is 1
// setting to 5 will run a maximum of 5 tests at a time
// setting to Infinity will run all tests at once
test.maximumConcurrentTests = Infinity;
test.on('finish', totalAssertionsFailed => console.log('run once all tests have finished'));
test('basic test that passes', t => {
t.plan(1);
t.equal(1, 1);
});
test('basic test that assets with a description', t => {
t.plan(1);
t.equal(1, 1, 'optional message to describe assertion');
});
test('plan is optional, but recommended', t => {
t.equal(1, 1);
});
test('basic test that passes with async', async t => {
t.plan(1);
const something = await doSomething();
t.equal(something, 1);
});
test('basic test that passes with timer', async t => {
t.plan(1);
setTimeout(() => {
t.equal(something, 1);
}, 100);
});
test('cleanup', async t => {
t.plan(1);
const server = http.createServer((request, response) => {
response.end('ok');
}).listen(8080);
fetch('http://localhost:8080')
.then(response => response.text())
.then(text => {
t.equal(text, 'ok');
});
// this will run once the number of planned tests is reached
return () => {
server.close();
};
});