UNPKG

simulado

Version:
182 lines (112 loc) 4.97 kB
# Simulado [![CircleCI](https://img.shields.io/circleci/project/github/ldabiralai/simulado.svg)](https://circleci.com/gh/ldabiralai/simulado) [![npm](https://img.shields.io/npm/v/simulado.svg)](https://www.npmjs.com/package/simulado) [![node](https://img.shields.io/node/v/simulado.svg)]() [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) [2.x docs](https://github.com/ldabiralai/simulado/tree/v2) ### Install ```bash npm i simulado --save-dev ``` or ```bash docker run -p <desired_port>:80 ldabiralai/simulado ``` ### Usage #### CLI This will keep the server alive until the process is killed (unlike the below). ```bash ./node_modules/.bin/simulado ``` ##### Options `-p`, `--port` - Port number that Simulado should start on. `-f`, `--file` - Path to a JSON file containing mocks to mock on startup. ##### For HTTPS, use the following options `-c`, `--cert <filepath>` - Path to certificate `-k`, `--key <filepath>` - Path to certificate key #### Web Client Once Simulado has started, going to `http://localhost:<SIMULADO_PORT_NUM>` will display a list of mocked endpoints and their responses. #### Basic Usage (ES6) ```javascript import simulado from 'simulado'; import axios from 'axios'; (async function() { // Start Simulado server await simulado.start(); // Mock a response await simulado.setMock({ path: '/data', body: 'Hello World!' }); // Make a request const response = await axios.get('http://localhost:7001/data'); console.log(response.data); // => 'Hello World!' // Stop Simulado server once done await simulado.stop(); })(); ``` ### API #### `start([options])` Start Simulado - options `<Object>` - `port` `<number>` - Specify the port number to start Simulado on. Default: `7001` - `https` `<object>` - Enable https support - `key` `<string>` - path to key file - `cert` `<string>` - path to cert file #### `setRemoteServer(url)` Sets the url of a simulado instance on which the client should set mocks, for use if simulado lives on another server. - `url` `<String>` for example `https://my-simulado-server.herokuapp.com` #### `isRunning()` Returns `true` if simulado is running. Returns `false` if simulado is not started. #### `setMock(mockResponse)` Sets a mock response - `mockResponse` `<MockResponse>` - Add a response to the store. [Full options MockResponse](#mock-response-options). #### `setMocks(mockResponses)` Sets multiple mock responses - `mockResponses` `[<MockResponse>]` - Add responses to the store. [Full options MockResponse](#mock-response-options). #### `setDefaults(mockResponses)` Clears mocked responses and sets new mocked responses - `mockResponses` `[<MockResponse>]` - Add responses to the store. [Full options MockResponse](#mock-response-options). #### `lastRequests(method, path[, limit])` Fetch the last requests for a path - `method` `<String>` - The request method for the requests you want to fetch - `path` `<String>` - The path of the requests you want to fetch - `limit` `<number>` - Only return the given number of last requests #### `lastRequest(method, path)` Fetch the last request for a path - `method` `<String>` - The request method for the requests you want to fetch - `path` `<String>` - The path of the requests you want to fetch #### `clearResponse(method, path)` Clear mocked response from the store - `method` `<String>` - The HTTP request method to clear saved response from - `path` `<String>` - The path to match against when clearing #### `clearResponses()` Clear all mocked responses from the store. #### `clearRequest(method, path)` Clear captured request from the store - `method` `<String>` - The HTTP request method to clear saved request from - `path` `<String>` - The path to match against when clearing #### `clearRequests()` Clear all captured requests from the store. #### `stop()` Stop Simulado. ### Mock Response Options ```javascript { // Path - Mandatory - The HTTP request path that you want the mock to response to. path: '/testPath', // String path path: /\/testPath/.*/, // Regex path method: 'GET', // Optional (defaults to GET if not set) - The HTTP request method that you want the mock to response to. status: 200, // Optional (defaults to 200 if not set) - The HTTP status you want to mock to response with. headers: { 'X-Custom-Header': 'Custom Header Value' }, // Optional - The HTTP headers you want the mock to respond with. body: { data: 'DATA' }, // Optional - The HTTP response body you want the mock to respond with. conditionalHeaders: { needMe: 'true' }, // Optional - The mock with only response if the conditional headers are sent in the request. conditionalBody: { data: 'YouNeedThisData' }, // Optional - The mock will only response if the conditional body is sent in the request. delay: 5000 // the time (in milliseconds) to wait until responding to a request } ```