Abstract
This module provides a simple test framework to run unit test. You have to provide a list of json files with test cases and several callback functions
Test case schema
The test case definition in each file must follow the following schema:
{
type: 'array',
items: {
type: 'object',
properties: {
description: { type: 'string' },
tests: {
type: 'array',
items: {
type: 'object',
properties: {
description: { type: 'string' }
},
required: ['description']
}
}
},
required: ['description']
}
}
Callbacks
Define the following callbacks to run the tests
Prepare
Prepare is called for each testcase. Use it to prepare the object to test and return it
.on('prepare', testcase => {
// testcase is the full object structure of one testcase, one element of the topmost array
return myTestObject
})
Run
Run is called for each test. Use it to run the test and return the result
.on('run', (test, object) => {
// test is the full object structure of one test, one element of the inner array (property tests)
return object.callFunctionToTest(test.data)
})
Validate
Validate is called for each test. Use it to validate the result
.on('validate', (result, test, path) => {
// path contains all information about the current test: filename/testcase description/test description
.unitTest.assertEqual(result, test.result, path)
})
break
Break is called, if you reques to run the test again (for esample on validation error). Then it will be called before the same test runs again. Use it to add a breakpoint and start debugging
.on('break', (test, object) => {
// redo the test for debugging
return object.callFunctionToTest(test.data)
})
Methods
new TestRun(verbose) creates a new testrun object. Use verbose, if the framework shall log each step.
run
Use run(fileNames) to run the testcases
on
Use on to register the callback functions (prepare, run, test, validate, break)
runAgain
Use it to run the last testcase again. It is usually called in "Validate" on validation error to simplify debugging.
unitTest
Use the getter unitTest to get the unit test object (see module @mangar2/unittest)