Install
$ npm install --save http-mockserver
Usage
const { mockServer } = require('http-mockserver');
mockServer.addMock({
port: 8080,
method: 'GET',
uri: '/my/url',
response: {
body: 'Hello world'
}
});
let counter = 0;
mockServer.addMock({
port: 8080,
method: 'GET',
uri: '/my/other/url',
handler: function (req, res) {
counter++;
res.send(`Counter: ${counter}`);
}
});
Mock object
To mock an endpoint, the mock object should follow one of these structures:
Static mock
- port: port of request, eg.
4000
- uri: uri of request, eg.
/users/peter
- method: method of request, eg.
GET
- response: Response object
- body, eg.
{data: "hello"}
- statusCode, eg.
404
(default: 200) - headers, eg.
{"Content-Type": "application/json"}
Dynamic mock
- port: port of request, eg.
4000
- uri: uri of request, eg.
/users/peter
- method: method of request, eg.
GET
- handler:
function(req, res) {...}
API
The following methods are available on both mockServer
and mockClient
addMock(mock)
Mock and endpoint of a port and route, with a specific response (static mock) or a handler function (dynamic mock).
Arguments:
getRequests([port])
Returns request log. If port is specified, request will be filtered by this
Arguments:
waitForRequest(port, predicate, [count = 1, delay = 500])
Returns a list of request logs that the predicate returns truthy for. The predicate is invoked with three arguments: (requestLog, index, requestLogs).
Arguments:
- port: Port number.
- predicate: The function invoked per iteration.
- count: Exact number of request logs to match before returning
- delay: Time between requests
clearAll()
Remove all mocks and clear the request log
MockServer API
The following methods are available only available on mockServer
mockServer.start(port)
Start mockserver on the specified port.
Arguments:
- port: Port of MockServer (default: 3000)
mockServer.stop()
Stop mockserver
MockClient API
The following methods are available only available on mockClient
mockClient.setServerHost(serverHost)
Set hostname and port of mockserver. This is necessary if you start mockserver on a non-default port.
Arguments:
- serverHost: Host of mockserver (Default:
localhost:3000
)
MockServer CLI Options
If you need to interact with the mockserver from non-Node languages, you can start it as a stand-alone process, and add mocks by interacting with the REST api.
To start mockserver from command line http-mockserver
.
You can also use the CLI tool to start a mockserver with some preconfigured mocks, and load them on startup with http-mockserver --mocks ./mock-folder
$ http-mockserver --help
Usage: http-mockserver [options]
Options
--port MockServer port, default: 3000
--mocks Path to mock config files