Test invariants in development enviroment for peace of mind.
npm install prendreSee: "unassert - encourage reliable programming by writing assertions in production" -- talk at NodeFest 2015, and "One more thing..." in talk at NodeFest 2016, titled "From Library to Tool - power-assert as a General Purpose Assertion Enhancement Tool"
js
// inject global assume function which do nothing in production.
require('prendre');// throw exception but do nothing in production.
assume(1, 'is', 2);
`
Benchmark
Suites
`js
require("../index");
function add(a, b) {
return a + b;
}function add_assume(a, b) {
assume(a, "is", 1);
assume(b, "is", 2);
return a + b;
}
module.exports = {
"without prendre": function() {
add(1, 2);
},
"with prendre": {
onError() {},
fn: function() {
add_assume(1, 2);
}
}
};
`
Run without NODE_ENV=production
`sh
node benchmark/index.js
without prendre x 76,860,933 ops/sec ±1.31% (87 runs sampled)
with prendre x 29,922,554 ops/sec ±0.96% (83 runs sampled)
Fastest is without prendre
`
Run with NODE_ENV=production
`sh
NODE_ENV=production node benchmark/index.js
without prendre x 74,486,295 ops/sec ±1.71% (87 runs sampled)
with prendre x 73,800,204 ops/sec ±1.67% (81 runs sampled)
Fastest is without prendre,with prendre
``