beautiful-lies
v3.3.3
Published
Test doubles for asynchronous JavaScript that are easy on the eyes.
Downloads
11
Maintainers
Readme
Beautiful Lies
Mocks for asynchronous JavaScript that are easy on the eyes. Yay! Hooray! Fnuff.
Create a test double ...
var beautiful = require('beautiful-lies')
beautiful.lie()
var db = {}
db.lie({
function_name: 'connect',
on_promise_done: {
function_name: 'query',
promise_fail_value: {
message: 'The query timed out.'
}
}
})
And call it ...
db.connect().done(function() {
db.query().fail(function(error) {
console.log(error.message) // <-- Will output 'The query timed out.'
})
})
Syntax
Liars are generated using a simple, hierarchial JSON-based DSL, that has three basic types of building specifications: expectations, results and callbacks.
Expectation specification
{
function_name: 'collection',
arguments: [ 'members' ],
check: function() { return true },
returns: /* RESULT SPEC GOES HERE */
run_function: function() {
// anything you want here.
}
run_callback: /* ARRAY OF CALLBACK SPECS GOES HERE */
run_callback_flow: /* ARRAY OF CALLBACK SPECS GOES HERE*/
}
Result specification
{
self: false
value: { someProperty: 5 }
on_value: /* ARRAY OF EXPECTATION SPECS GOES HERE */
},
Callback specification
{
property_xxxx: /* RESULT SPEC GOES HERE */,
argument_1: /* RESULT SPEC GOES HERE */,
argument_2: /* RESULT SPEC GOES HERE*/,
of: {
function_name: 'addEventListener'
arguments: [ 'click' ]
},
delay: 1000
}
Macros
Expectations, results and callback object are buildings blocks that can be used to construct macros (on_promise_done is a plugin, for instance). Check out the built-in macros here, for inspiration: https://github.com/mpj/beautiful-lies/blob/master/src/macros.coffee