nockoff

0.0.3 • Public • Published

nockoff

An extensible request hijacker for mocking URLs in tests. Use it to simplify your testing against external APIs.

Installation

nockoff will be used internally in your test suite, so save it to your package.json.

npm install nockoff -s

Usage

nockoff lets you mock calls to external URLs through Node's http and https requests method. You represent the parts of the request you wish to assert were called and return the response you require.

nockoff('abc.com')
    .presentAndEqual( { query: { one: 1 } } )
    .respond( { header: { 'code': 200 }, body: require('./stock-market-fixture.json') } );
 
http.request('abc.com/?search=todays+stock+prices', function(err, res) {
    console.log(')
});
 

Concepts

nockoff is pretty simple. The central concept is matchers. You can use the default matchers we provide (see presentAndEqual above, there are more coming) or write your own; either to use across tests or inline.

Inline Matchers

Reusable Matchers

A reusable matcher is created by writing a function that takes two arguments

nockoff.addMatcher('simpleMatch', simpleMatcher);

nockoff("foo.com") .mustLogOut( { query: { logout: true } } ) .respond( { header: { 'code': 200 }, body: '{ two: 2 }' } );

http.request("http://abc.com/?logout=true", function(res) { expect(called).to.be.ok; done(); });


### Writing your own matcher.

Matchers JS modules that support a 'match' function

```js
var knockOff = require('knock-off');
var simpleMatcher = Object.create({}, knockOff.Matcher);

simpleMatcher.match = function(matchBody) {
    var errStr = '';
    if (Object.keys(matchBody.query).length == 0) {  //assert that there are query parameters
        errStr = 'Query parameters are missing.';
    }

    return errStr;
};


var knockOff = require('knock-off');



knockOff.addMatcher(function(matchBody) {  return str;  }); //only lasts for the duration of the current knock off call

knockOff.Matchers.add(function(matchBody) {
    //matching logic
    return str;
}); //this matcher is available everywhere the knockOff module is used

Contributors

Written at News Ltd as a replacement for nock.

  • @nicholasf
  • @cgiffard
  • @indieasaconcept

Readme

Keywords

none

Package Sidebar

Install

npm i nockoff

Weekly Downloads

0

Version

0.0.3

License

ISC

Last publish

Collaborators

  • nicholasf
  • cgiffard
  • indieisaconcept