npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mock-async

v0.1.2

Published

Simple one-method library for mocking asynchronous methods

Downloads

3

Readme

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.

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