mammock

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.

mammock

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.

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.

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

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 = {
        getfunction (routerequestresponse) {
            return {
                status: 200,
                headers: {
                    "Content-Type": "application/json"
                },
                response: JSON.stringify({})
            }
        },
        postfunction (routerequestresponsedata) {
            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();
 
            });
        },
        putfunction (routerequestresponsedata) {
            return {
                status: 200,
                contentType: "application/json",
                response: data
            }
        },
        deletefunction (routerequestresponse) {
            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;
}

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.

  • 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
  • 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)
  • 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
  • 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
  • Fixed documentation error stating the version was 0.2.5
  • Fixed major GET bug
  • Fixed build further
  • Actually ready for release
  • Cleaned up build
  • First npm publish
  • Fixed major endpoint bug, which resulted in endpoints being inaccessible
  • Fixed index routing bug
  • 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
  • First functional server running as intended.
  • Options added to command line
  • Added initial structure and got .travis.yml not being bejankity.

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