mock-async
v0.1.2
Published
Simple one-method library for mocking asynchronous methods
Downloads
3
Readme
Mock Async
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.
a = 5, b = 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.pathname, page: 1).shouldSucceed
html: '<div class="page1"></div>'
@getJSON.whenCalledWith(location.pathname, page: 2).shouldSucceed
html: '<div class="page2"></div>'
$.getJSON(location.pathname, page: 1).done (result) ->
console.log result.html # => '<div class="page1"></div>'
$.getJSON(location.pathname, page: 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.pathname, page: 1).shouldSucceed(html: '<div class="page1"></div>')
.whenCalledWith(location.pathname, page: 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