A CLI to simplify the way you create mocks, dynamic REST APIs mocks. 💥
Dymock allows you to build a mock server in a simple way, without programing, focusing on configuration files.
It gives you the power to dynamically define witch response send back, based on params match.
Create a tool that help us to unblock the mobile or frontend, API integration process. Making possible work in teams without API dependences at the development time.
So, Dymock should be a way to organize and define APIs contracts together (front/mobile | backend) and enable a simulation of the real API.
Basically, we allows you to build and run a server, just with config files, that can send back different responses based on the params received in the request.
We recommend install dymock globally using npm:
npm install -g dymock
By default dymock will try to find a .config
file in a dir based on the request url.
e.g.
GET /user/login
DIR ./url/user/login/(.config.js OR .config.json)
The config file need to be named as .config
and is responsible to define two things:
-
options: a list (array) of:
- params: the params that we can match in.
You don't need to set all the request, just params that you wanna match.
- response: the object we'll return if match the params.
- params: the params that we can match in.
-
default: a default response if nothing match.
This config file can be a json or a js file, we recommend js to simplify the organization using
require
to import the response file.
e.g.
// JSON File
{
"options": [
{
"params": {
"cpf": 12345
},
"response": {
"message": "client"
}
},
{
"params": {
"cpf": 43210
},
"response": {
"message": "not client"
}
},
{
"params": {}, // GET
"response": {
"message": "Login page"
}
}
],
"default": {
"error": {
"message": "Invalid params"
}
}
}
// JS File
module.exports = {
options: [
{
params: {
cpf: 12345
},
response: require('./client.json'),
},
{
params: {
cpf: 43210
},
response: require('./not-client.json'),
},
{
params: {}, // GET
response: {
message: 'Login page'
}
}
],
default: {
error: {
message: 'Invalid params'
}
}
};
To run the server defining the port you can do:
The default port is: 3000
dymock -p 5000
You can get help running:
dymock -h
and the version:
dymock -v
If you want to change the dir structure, you can define were each path will look for the config file.
To do that you need to create a .url-config.json
file in your project root.
e.g.
[
{
"url": "user/login/password/forget",
"path": "./remember-password"
},
{
"url": "post/create/new",
"path": "./post"
}
]
Remember: If you create this config file, the default mechanism will be disabled.