node package manager
Painless code sharing. npm Orgs help your team discover, share, and reuse code. Create a free org »

zock

Zock Build Status

Zock is an HTTP mocking library for both node.js and the browser Similar to Nock (but isomorphic)

Contributions weclome!

Install

$ npm install zock

Usage

require('coffee-script/register') // register coffee-script
var request = require('clay-request')
var zock = require('zock')
 
zock
  .base('http://baseurl.com')
  .get('/test')
  .reply(200, {hello: 'world'})
  .get('/anotherRoute')
  .reply(200, {hello: 'world'})
  .post('postroute')
  .reply({hello: 'post'})
  .get('/test/:name')
  .reply(function(req) {
    // req.params = path params
    // req.query = query params
    // req.body = post body (only supports JSON at the moment)
    return req
  })
  .withOverrides(function() {
    request('http://baseurl.com/test')
    .then(function (result) {
      // result = {hello: 'world'}
    })
  })
 
 
// permanent browser
window.XMLHttpRequest = zock
  .base('http://baseurl.com')
  .get('/test')
  .reply(200, {hello: 'world'})
  .XMLHttpRequest
 
window.fetch = zock
  .base('http://baseurl.com')
  .get('/test')
  .reply(200, {hello: 'world'})
  .fetch()
 
// permanent node.js
http = require 'http'
http.request = zock
  .base('http://baseurl.com')
  .get('/test')
  .reply(200, {hello: 'world'})
  .nodeRequest()

base({String} path)

Set the base url that the following routes will be based from

get({String} route)

Begin defining a mocked GET request

post({String} route)

Begin defining a mocked POST request

put({String} route)

Begin defining a mocked PUT request

exoid({String} path)

Begin defining a mocked Exoid request see https://github.com/Zorium/exoid for more information

reply({String} [status]=200, {Object|Function} response)

Define reply for the previously defined mock request

logger({Function} logger)

Bind a logging function for debugging

zock
.logger(function(debug) {
  console.log(debug)
})

XMLHttpRequest

Return special XMLHttpRequest stub object based on previous setup

fetch

Return special fetch stub object based on previous setup

nodeRequest({Boolean} [isHttps]=false)

Return special http.request (or https.request) stub object based on previous setup

withOverrides({Function} testCode)

runs the function passed in with global overrides enabled, and removes after the function returns Supports promises

allowOutbound()

Allow outbound network requests

Contributing

$ npm -d install
$ npm test

Changelog

0.2.10 -> 0.3.0

  • [node] support https
  • outbound requests fail by default
  • add allowOutbound()

0.1.3 -> 0.2.0

  • rename withOverride to withOverrides
  • add window.fetch support