/zock

HTTP mocking library for node.js and the browser

Primary LanguageCoffeeScriptMIT LicenseMIT

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 Second parameter is a function to override entire response object instead of using return value as body

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