https://github.com/zeucxb/dymock
A CLI to simplify the way you create dynamics mocks.
https://github.com/zeucxb/dymock
cli javascript mocks mockserver nodejs typescript
Last synced: about 1 month ago
JSON representation
A CLI to simplify the way you create dynamics mocks.
- Host: GitHub
- URL: https://github.com/zeucxb/dymock
- Owner: zeucxb
- License: mit
- Created: 2018-05-30T01:55:35.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T05:43:24.000Z (over 2 years ago)
- Last Synced: 2024-12-14T09:35:26.389Z (6 months ago)
- Topics: cli, javascript, mocks, mockserver, nodejs, typescript
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/dymock
- Size: 56.6 KB
- Stars: 12
- Watchers: 3
- Forks: 2
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Dymock :alien: :boom:
[](https://npmjs.org/package/dymock)> A CLI to simplify the way you create mocks, dynamic REST APIs mocks. :boom:
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](http://npmjs.org):
```bash
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
// 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"
}
}
}
``````javascript
// JS Filemodule.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
```bash
dymock -p 5000
```You can get help running:
```bash
dymock -h
```and the version:
```bash
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.
```json
[
{
"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.**