A configurable mock server with an intuitive configuration management interface and a http api.
Mocknode allows you to mock http endpoints quickly and easily. The simple management interface lets you configure how the server responds to different endpoints:
- Proxy - Proxies the request to an existing service
- Stub - A static response which you can manage in the 'manage stubs' link of the route
- Dynamic Stub - Responds with a configured stub if the condition defined evaluates to true
The interface allows every one working on the team to have clear visibility on what routes are being used by an application and all possible responses of the route. Thus making stubs to act as proper documented examples.
You can use mocknode to write integration tests for your application. Dynamic stubs can be used to define strategies which can be asserted in your test scripts. You can have even more granular control on the integration tests by using the http api exposed by mocknode. Use the API to toggle the handle for a route, change the stub which is being responded, etc.
A running instance on heroku
https://mocknode.herokuapp.com/mocknode/ please go easy on this :)
Installing and Runing the server
- clone/download this repository
- make sure you have node and npm installed
npm installto download required packages
node server.jsto run the server
npm global install
- npm install -g mocknode
mocknodeto start the server
npm local install
- npm install --save mocknode
- add an npm script entry in the package.json
npm run mocknodeto start the server
and open https://localhost:3000/mocknode/ in your browser to configure mocknode
Mocknode has a downstream dependency on buffertools which executes a node-gyp during install. A common problem with node-gyp exists nodejs/node-gyp#809. If there are node-gyp errors during 'npm install' an easy fix is to remove the gyp installed on your OS.
The order of preference for the port on which mocknode runs is:
env variable of process > port option passed > 3000
mocknode --port 4000 starts the server on port 4000, unless a PORT env variable exists for the process.
Open https://localhost:3000/mocknode/ in your browser to configure mocknode
All your changes are saved in the config.json file and the stubs folder. This ensures all your changes are saved if you restart mocknode. You can easily backup all of your configuration by making a copy of these files.
If you have installed mocknode as a global npm package
mocknode --location prints the installation path of mocknode.
mocknode stores logs in the logs/ folder of the installation directory
- access.log - logs all requests to mocknode
- change.log - logs all configuration change requests made to mocknode
Export and Import config
The config.json file and stubs folder hold all the configuration of mocknode.
mocknode --export creates a mocknode-config.tar file which can be used to setup another instance of mocknode.
mocknode --import [file_path] imports a config.tar file to configure mocknode.
Mocknode exposes a series of endpoints which can help you integrate it with your code - [ test scripts for example ]
mocknode interface uses the above endpoints to interact with the server, inspect the network of the browser to better understand the parameters used in each api.
The config files and the stubs folder mentioned above have all the information regarding your configuration.