Sitter
A small test framework for Node.js written in ES6. Best suitable for comparing simple structures in purpose-written unit tests:
- JSON
- array
- plain object
- js primitive types
Was written to provide a clean and simple output on such simple unit tests. Based on:
Exposes several assert types:
equal
- equality
==
- equality
equalStrict
- identity
===
- identity
deepEqual
- in depth with leafs beeing compared with equality
==
- in depth with leafs beeing compared with equality
deepEqualStrict
- in depth with leaf beeing compared with identity
===
- default option
- recommended as it works fine on primitive types
- in depth with leaf beeing compared with identity
More on equality comparison in JS on Equality comparisons and sameness.
Usage
Install with:
npm install sitter --save
// module import
var Sitter = require('sitter').Sitter;
// samples to assert
var toTest = [
{
result:{a:1, b:2},
expected:{a:1, b:2}
},
{
result:null,
expected:undefined
},
{
result:[1, 2, 3],
expected:[1, 3, 2]
}
];
//====================================================================//
// An instance of a single Sitter. //
// The one paramter is a String which is the name of the group of the //
// asserts that are to be performed. //
//====================================================================//
let localTest = new Sitter('LOCAL TEST');
//==================================================================//
// Each assert is configured in a plain object. //
// The same object can be reused in multiple asserts under the same //
// instance of Sitter. //
//==================================================================//
let localTestData = {
result:null,
expected:null,
assertType:'deepEqualStrict',
message:'',
entry:''
};
for (let i = 0; i < toTest.length; i++) {
localTest.asserts({
result:toTest[i]['result'],
expected:toTest[i]['expected'],
assertType:'deepEqualStrict',
entry:'CASE ' + i
});
}
This will output:
————————[LOCAL TEST]
└———[CASE 0] PASS ✓
└———[CASE 1] FAIL ×
└———[CASE 2] FAIL ×
Internally, each instance holds an Array of entry names that have failed (.failedAsserts
) and that one that have passed (.passedAsserts
):
console.log(localTest.failedAsserts);
console.log(localTest.passedAsserts);
For an example, see src/test/test
Sitter
var Sitter = require('sitter').Sitter;
let localTest = new Sitter(<TEST NAME>, <OPTIONS>);
<TEST NAME>
- String
- OPTIONAL - defaults to some random name
<OPTIONS>
- plain object
- OPTIONAL
- properties:
hideLogs
- Boolean
- OPTIONAL
- defaults to false
- hide the console logs
Assertion
localTest.asserts({
result:<RESULT>,
expected:<EXPECTED>,
assertType:<ASSERT TYPE>,
message:<MESSAGE>,
entry:<ENTRY>
});
<RESULT>
- REQUIRED
- what is to be tested
- primitives, plain objects, JSON, array
<EXPECTED>
- REQUIRED
- what is to be expected
- primitives, plain objects, JSON, array
<ASSERT TYPE>
- String
- OPTIONAL - defaults to
deepEqualStrict
- one of the assert types
<MESSAGE>
- String
- OPTIONAL - defaults to ''
- additional message to display - 'should fail' for instance
<ENTRY>
- String
- RECOMMENDED - defaults to ''
- the name of a single assert
Test
Run npm test
in the root of the module.