Very simple mock of superagent http requests for testing purpose (from Node.js or the browser). Inspired by superagent-mocker, superagent-mock and nock.
Used for testing React components with Redux and Observable.
import request from 'superagent';
import nocker from 'superagent-nock';
const nock = nocker(request);
Define the base url
nock('http://localhost')
The url to mock
nock.get('/events/10')
The result to return
nock.reply(httpStatus, responseBody, responseHeaders, foo)
or specify a function
nock.reply(function(url) {
return {
status: 200,
result: responseBody,
headers: {'access-token': 'example-JSON-Web-Token'},
foo: {
something,
},
};
})
Then, when you do a get request on the url, the callback return the specified result
nock('http://localhost')
.get('/events/10')
.reply(200, {
id: 10,
title: 'My event'
});
request
.get('http://localhost/events/10')
.end((err, res) => {
console.log(res.body); // { id: 10, title: 'My event'}
};
You can chain your urls to mock:
nock('http://localhost')
.get('/events/10')
.reply(200, {
id: 10,
title: 'My event'
})
.get('/members/1')
.reply(404);
You should probably install it in devDependencies (-D)
$ npm i -D superagent-nock
nock.delay nock.query