mammock

0.2.3 • Public • Published

mammock Build Status Dependency Status

Mammock is a node.js service mocking framework designed to be quick and easy, allowing developers to fill the "missing gaps" in services during development.

Getting Started

Install the module with: npm install mammock

The command line script and library can also be installed globally, with: npm install -g mammock

Note: To install globally, it may be necessary to become a superuser on your OS with a command such as sudo.

Documentation

Basic Usage

USAGE: node mammock [--port <ARG1>] [--root <ARG1>] [--silent] 
  -p, --port <ARG1>     specify the port to listen on
  -r, --root <ARG1>     root path to serve from
  -s, --silent          runs the server without console output

Adanced Usage

Here is an example node, or endpoint, in Mammock:

module.exports  = function () {
    //We create a variable to return, 'node', so that we can set properties to the functions
    var node = {
        get: function (route, request, response) {
            return {
                status: 200,
                headers: {
                    "Content-Type": "application/json"
                },
                response: JSON.stringify({})
            }
        },
        post: function (route, request, response, data) {
            var endpoint = this,
                postData = "";
 
            endpoint.info("Now overriding the POST response...")
 
            request.on('data', function (data) {
                endpoint.info("Receiving POST data...");
                postData += data;
            });
            request.on('end', function () {
                endpoint.info("Finished receiving POST data");
                
                endpoint.info("Writing header response to POST request...");
                response.writeHeader(200, {
                    "Content-Type": "application/json"
                });
                endpoint.info("Writing response to POST request...");
                response.write(postData);
                response.end();
 
            });
        },
        put: function (route, request, response, data) {
            return {
                status: 200,
                contentType: "application/json",
                response: data
            }
        },
        delete: function (route, request, response) {
            return {
                status: 200,
                contentType: "application/json"
            }
        }
    }
 
    //overriding the node allows us to handle the request manually
    node.post.override = true;
    //setting capture on the method will allow you to have the method invoked
    //after the server has already captured the data, and pass it in as the 
    //optional fourth parameter
    node.put.capture = true;
    return node;
}

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

0.2.3

  • Server now retrieves package.json data
  • Server can now return the mammock version via Mammock.getVersion()
  • CLI mammock now reads the displayed version from the server
  • grunt build now runs the test task before building
  • CLI mammock can now be shutdown cleanly with Ctrl-c

0.2.2

  • Switched to mocha for testing, as it provides more reporters
  • Improved testing a bit
  • Switched npm test script from npm nodeunit to npm test
  • One step closer to coveralls reporting...
  • Fix for slightly outdated grunt-watch-contrib dependency (thank you gemnasium)

0.2.1

  • Minor fix for tests
  • Improved test mocks somewhat, but they still need some attention
  • Moved source files to live in src/, to clean up project root

0.2.0

  • Major rewrite of the routing engine to better suit a multitude of custom requesti methods
  • Removed Mammock.Endpoint and Mammock.Server, moving main constructor to the initial mammock instance
  • endpoints now get extended with logging abilities

0.1.6

  • Fixed documentation error stating the version was 0.2.5
  • Fixed major GET bug

0.1.5

  • Fixed build further
  • Actually ready for release

0.1.4

  • Cleaned up build
  • First npm publish

0.1.3

  • Fixed major endpoint bug, which resulted in endpoints being inaccessible
  • Fixed index routing bug

0.1.2

  • Added timestamps to logs
  • Added -s/--silent option to allow running the server sans output
  • Renamed bin/mammock to bin/mammock.js because no extension is stupid.
  • endpoints should now be reachable

0.1.1

  • First functional server running as intended.
  • Options added to command line

0.1.0

  • Added initial structure and got .travis.yml not being bejankity.

License

Copyright (c) 2013 Elden Armbrust
Licensed under the MIT license.

Readme

Keywords

none

Package Sidebar

Install

npm i mammock

Weekly Downloads

1

Version

0.2.3

License

none

Last publish

Collaborators

  • earmbrust