A simple library to translate code commenting to tests or other.
npm install defcommentA simple library to translate code commenting to tests or other.
- write simple test data in code comment
- support function test
- support browser and node environment
- support bash test case
npm i defcomment -g or npm i defcomment --save-dev
- quickest
deftest -s project/src or ./node_modules/.bin/deftest -s project/src
- assign dest directory and test directory
deftest -s project/src -t project/test/unit -d project/test/dest
- watch
Just add --watch
deftest -s project/src --watch
- environment
Run js tests in browser environment, just add -e browser option.
``js`
/**
* other commenting
*
* the test commenting
* ## test
* [
* [[1, 2], 3]
* [[4, 5], 9]
* ]
*/
var add = (a, b) => a + b
In our code, we use ## test as commenting title (you can use one or more # before the word test).the next lines after ## test is our test data. It's a matrix which contain some arrays, each array has two value. The first is input arguments, the second is the expected response.
- js code in test commenting
In your test data matrix, you can use js code. For example,
`js`
/**
* define map function
*
* ## test
* [
* [[v => ++v, [3, 4, 7]], [4, 5, 8]]
* ]
*/
var map = (handler, data) => {}
When your unit test is about a high order function, you should expand your array. See the example
`js`
/**
* ## test
* [
* [[3], [5], 15],
* [[6], [7], 42]
* ]
*/
var high = (a) => (b) => a * b;
If you function throw an error, you could just set expected output as an error.
In the comparation between real output and expected output, just compare error message.
`js`
/**
* ## test
* [
* [[2], 2],
* [[-1], new Error('v is too little. v = -1')]
* ]
*/
var error = (v) => {
if(v < 0) {
throw new Error('v is too little. v = ' + v);
}
return v;
};
`js``
/**
* ## test tar=bash
* cd .. && echo 123
*/