Skip to content
A CLI to simplify the way you create dynamics mocks.
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
src/lib
.gitignore
LICENSE
README.md
package-lock.json
package.json

README.md

Dymock 👽 💥

NPM version

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.

Proposal

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.

Summary

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.

Installation

We recommend install dymock globally using npm:

npm install -g dymock

Usage

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.
  • 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

Configuration

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.

You can’t perform that action at this time.