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

Dependencies (1)

Dev Dependencies (0)

    Package Sidebar

    Install

    npm i nockoff

    Weekly Downloads

    3

    Version

    0.0.3

    License

    ISC

    Last publish

    Collaborators

    • nicholasf
    • cgiffard
    • indieisaconcept