superagent-mocker

by A

Pretty simple in-browser mocks for CRUD and REST API

127 Stars 38 Forks Last release: almost 5 years ago (0.3.0) 109 Commits 12 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

superagent-mocker

Build Status Coverage Status npm version npm downloads

REST API mocker for the browsers. LOOK MA NO BACKEND! 👐

Written for superagent.

Install

npm i superagent-mocker

Usage

Setup

var request = require('superagent');
var mock = require('superagent-mocker')(request);

Timeout

You can provide custom timeout, that can be a function or a number. Just set

timeout
property to the
mock
:
var mock = require('superagent-mocker');

// set just number mock.timeout = 100;

// Or function to get random mock.timeout = function () { return Math.random() * 1e4 |0; }

Get

You may set headers using the

mock.set()
. To ensure header keys are not case sensitive, all keys will be transformed to lower case (see example).
mock.get('/topics/:id', function(req) {
  return {
    id: req.params.id,
    content: 'Hello World!',
    headers: req.headers
  };
});

request .get('/topics/1') .set({ 'X-Custom-Header': 'value of header' }) .end(function(err, data) { console.log(data); // { id: 1, content: 'Hello World', headers: { 'x-custom-header': 'value of header' } } }) ;

mock.del()
works in a similar way.

Post

You may set the body of a

POST
request as the second parameter of
mock.post()
or in
mock.send()
. Values set in
send()
will overwrite previously set values.
mock.post('/topics/:id', function(req) {
  return {
    id: req.params.id,
    body: req.body
  };
});

request .post('/topics/5', { content: 'I will be overwritten', fromPost: 'Foo' }) .send({ content: 'Hello world', fromSend: 'Bar' }) .end(function(err, data) { console.log(data); // { id: 5, body: { content: 'Hello world', fromPost: 'Foo', fromSend: 'Bar' } } }) ;

mock.put()
,
mock.patch()
methods works in a similar way.

Teardown

You can remove all of the route handlers by calling

mock.clearRoutes()
. This is useful when defining temporary route handlers for unit tests.
// Using the mocha testing framework
define('My API module', function(){

beforeEach(function(){ // Guarentee each test knows exactly which routes are defined mock.clearRoutes() })

it('should GET /me', function(done){ mock.get('/me', function(){done()}) api.getMe() })

it('should POST /me', function(done){ // The GET route handler no longer exists // So there is no chance to see a false positive // if the function actually calls GET /me mock.post('/me', function(){done()}) api.saveMe() })

})

Or you can remove only one specified route (by method and url)

// to register route
mock.get('/me', function(){done()})

...

// to remove registered handler mock.clearRoute('get', '/me');

Rollback library effect

In some cases it will be useful to remove patches from superagent lib after using mocks. In this cases you can use

mock.unmock(superagent)
method, that will rollback all patches that
mock(superagent)
call make.

License

MIT © Shuvalov Anton

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.