Package Exports
- m.test
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (m.test) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
m.test
m(icro)test is a lightweight test runner for node.js written in es6+ (~4kb).
install
install m.test directly from npm to project's devDependencies.
npm install --save-dev m.testusage
test files are run by simply passing them to node. for a given test/index.js run the following command to execute the suite:
node testrun the following one to enable node's debugger:
node debug testcli
more utilities to run your suites are available through the cli. if no files are given they will be looked up from ./test recursively.
m.test [options] [files]when executing suites through the cli m.test will be assigned to global.test by design. the following line can be omitted:
const {test} = require('m.test')further instructions can be accessed via --help flag and man-pages by executing either m.test --help or man m.test within your shell.
basic usage
const {ok} = require('assert')
test('it just works!', function () {
ok(true)
})async usage
const {ok} = require('assert')
test('it works async too!', function (done) {
setTimeout(function () {
ok(true)
done()
}, 0)
})
test('done takes a error argument!', function (done) {
setTimeout(function (err = null) {
done(err)
}, 0)
})context usage
test('can be used as a context', function () {
test('works!', function (done) {
done(null)
})
test('works!', function (done) {
done(null)
})
})alias usage
const {test: context, test: describe, test: it} = require('m.test')
context('given some context', function () {
describe('your subject', function () {
it('just works!', (done) => done(null))
})
})beforeEach afterEach usage
test('description', function (done) {
done(null)
})
beforeEach(done => setup(done))
afterEach(done => teardown(done))it is important to call beforeEach and afterEach wrap functions after test functions themselves. when using wraps within nested suites consider their contextual binding.
test('description 1', function () {
test('description 1.1', Function.prototype)
test('description 1.2', Function.prototype)
beforeEach(done => setup(done))
afterEach(done => teardown(done))
})
test('description 2', function () {
test('description 2.1', Function.prototype)
test('description 2.2', Function.prototype)
})(in the example above hooks would be called for 1.1 e 1.2)
skip modifier
test.skip('description', function () {
// this function will never be called
})the skip modifier comes with an optional doSkip=true parameter that enables/disables the skip behavior according to the expression:
test.skip('description', function () {
// this test will be skipped when NODE_ENV=CI
}, /CI/gi.test(process.env.NODE_ENV))timeout modifier
test.timeout('description', function () {
// this test will fail if it exceeds 200ms of execution
}, 200)the timeout modifier comes with an optional doTimeout=true parameter that enables/disables the timeout behavior according to the expression:
test.timeout('description', function () {
// this test will have a timeout when NODE_ENV=CI
}, 200, /CI/g.test(process.env.NODE_ENV))