beautiful-lies

3.3.3 • Public • Published

Beautiful Lies

Build status Dependency status Dependency (dev) status

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

Package Sidebar

Install

npm i beautiful-lies

Weekly Downloads

3

Version

3.3.3

License

MIT

Last publish

Collaborators

  • mpj