0.4.6 • Public • Published


    A flexible and powerful stand-in API server.

    This server is meant to be booted quickly (for example, inside a test suite) in a Node.js process.


    From the command-line:

    ./node_modules/.bin/mock-api-server --port PORT

    To boot once for a test:

    var MockApi = require('mock-api-server');
    var api = new MockApi({"port": 7000});
    api.start(function(err) {
      // ... do stuff ...

    To connect to an existing server:

    var MockApi = require('mock-api-server');
    var api = new MockApi({"port": 7000});
    api.reset(); // Or whatever you want to do.

    See test/ for more detailed examples.

    If you are using Mocha, you can also boot the server in a before clause. It's also possible to boot the server once at the beginning of the test suite.


    The MockApi supports the following options:

    Option Description
    `port` The IP port on which the mock server listens. Must be specified.
    `logToConsole` If `true`, requests will be logged to the console. Default: `false`.
    `logToFile` If set to a filename, requests will be logged to the specified file. If `null` or omitted, no file logging is done.

    Canned Responses

    Canned responses live in your project's test/mock-api directory. This directory and its subdirectories has the same structure as your API. For example, to serve an endpoint /v2/foobizzle, populate the file test/mock-api/GET/v2/foobizzle.json.

    Responding to HTTP Methods

    Files in the test/mock-api/GET subdirectory are used for GET requests. Files in test/mock-api/PUT subdirectory are used for PUT requests, and so forth.

    Responding to Query Parameters

    If you have these three files:


    then mock-api-server will serve the third one when type=search and s=foo are provided as query parameters. If only type=search is provided, the second one will be served--mock-api-server will take the most specific matching file.

    * can be used to match zero or more characters. For example, the following file:


    Will match requests with a query parameter type containing a value "search" or "index,search" or "search,index".

    Note that most shells will interpret ?, *, and &, so to create these files, you will have to backslash them. For example:

    $ touch test/mock-api/GET/v2/foobizzle.json\?type=\*search\*\&s=foo

    Live Responses

    You can tell the API server to respond to a particular request like so:

    api.respondTo('/foo/bar').with({status: 'OK', headers: {'access-control-allow-origin': '*'}});

    This will be active until the next time api.reset() is called.

    You can modify an existing response with:

    api.respondTo('/foo/bar').byReplacing('[1].baz').with([ 76 ]);




    npm i mock-api-server

    DownloadsWeekly Downloads






    Last publish


    • eraserhd