mock-async

0.1.2 • Public • Published

Mock Async

Build Status

How to use

Just mock an asynchronous method with this simple function.

@getJSON = mockAsync($'getJSON')

The first argument here is an object, and the second one is method name. Mocked method API will be returned. Here we've saved reference to it with @getJSON variable.

Mock API

Than we can make our mocked method to do what we want from it to do.

MockApi.shouldSucceed(callback or value)

Makes mocked method to resolve with specified result by default.

@getJSON = mockAsync($'getJSON')
 
@getJSON.shouldSucceed '5'
$.getJSON().done (result) ->
  console.log result # => 5 

You can provide callback, so, result will be calculated, based on callback's returned value.

= 5= 3
@getJSON = mockAsync($'getJSON')
 
@getJSON.shouldSucceed -> a + b
$.getJSON().done (result) ->
  console.log result # => 8 

MockApi.shouldFail(callback or value)

The same as MockApi.shouldSucceed, but rejects mocked promise.

MockApi.whenCalledWith(arguments...).shouldSucceed(callback or value)

You can make mocked method to return different results based on provided to this method arguments.

@getJSON = mockAsync($'getJSON')
 
@getJSON.whenCalledWith(location.pathname).shouldSucceed
  html: '<div class="page1"></div>'
 
@getJSON.whenCalledWith(location.pathnamepage: 1).shouldSucceed
  html: '<div class="page1"></div>'
 
@getJSON.whenCalledWith(location.pathnamepage: 2).shouldSucceed
  html: '<div class="page2"></div>'
 
$.getJSON(location.pathnamepage: 1).done (result) ->
  console.log result.html # => '<div class="page1"></div>' 
 
$.getJSON(location.pathnamepage: 2).done (result) ->
  console.log result.html # => '<div class="page2"></div>' 

You can also chain different mocking rules.

@mockApi = mockAsync($'getJSON')
  .whenCalledWith(location.pathname).shouldSucceed(html: '<div class="page1"></div>')
  .whenCalledWith(location.pathnamepage: 1).shouldSucceed(html: '<div class="page1"></div>')
  .whenCalledWith(location.pathnamepage: 2).shouldSucceed(html: '<div class="page2"></div>')

MockApi.restore()

Restores mocked method.

initialMethod = $.getJSON
 
@getJSON = mockAsync($'getJSON')
$.getJSON is initialMehod # => false 
 
@getJSON.restore()
$.getJSON is initialMethod # => true 

Readme

Keywords

none

Package Sidebar

Install

npm i mock-async

Weekly Downloads

1

Version

0.1.2

License

MIT

Last publish

Collaborators

  • s0ber