New Power Management

    @cantremember/node-mocks-http

    1.5.0 • Public • Published

    node-mocks-http logo

    NPM version Build Status Gitter chat

    Mock 'http' objects for testing Express routing functions, but could be used for testing any Node.js web server applications that have code that requires mockups of the request and response objects.

    Installation

    This project is available as a NPM package.

    $ npm install --save-dev node-mocks-http

    Our example includes --save-dev based on the assumption that node-mocks-http will be used as a development dependency..

    After installing the package include the following in your test files:

    var httpMocks = require('node-mocks-http');

    Usage

    Suppose you have the following Express route:

    app.get('/user/:id', routeHandler);

    And you have created a function to handle that route's call:

    var routeHandler = function( request, response ) { ... };

    You can easily test the routeHandler function with some code like this using the testing framework of your choice:

    exports['routeHandler - Simple testing'] = function(test) {
    
        var request  = httpMocks.createRequest({
            method: 'GET',
            url: '/user/42',
            params: {
              id: 42
            }
        });
    
        var response = httpMocks.createResponse();
    
        routeHandler(request, response);
    
        var data = JSON.parse( response._getData() );
        test.equal("Bob Dog", data.name);
        test.equal(42, data.age);
        test.equal("bob@dog.com", data.email);
    
        test.equal(200, response.statusCode );
        test.ok( response._isEndCalled());
        test.ok( response._isJSON());
        test.ok( response._isUTF8());
    
        test.done();
    
    };

    API

    .createRequest()

    httpMocks.createRequest(options)
    

    Where options is an object hash with any of the following values:

    option description default value
    method request HTTP method 'GET'
    url request URL ''
    originalUrl request original URL url
    path request path ''
    params object hash with params {}
    session object hash with session values undefined
    cookies object hash with request cookies {}
    signedCookies object hash with signed cookies undefined
    headers object hash with request headers {}
    body object hash with body {}
    query object hash with query values {}
    files object hash with values {}

    .createResponse()

    httpMocks.createResponse(options)

    Where options is an object hash with any of the following values:

    option description default value
    eventEmitter event emitter used by response object mockEventEmitter
    writableStream writable stream used by response object mockWritableStream

    Design Decisions

    We wanted some simple mocks without a large framework.

    We also wanted the mocks to act like the original framework being mocked, but allow for setting of values before calling and inspecting of values after calling.

    For Developers

    We are looking for more volunteers to bring value to this project, including the creation of more objects from the HTTP module.

    This project doesn't address all features that must be mocked, but it is a good start. Feel free to send pull requests, and a member of the team will be timely in merging them.

    If you wish to contribute please read our Contributing Guidelines.

    Release Notes

    Most releases fix bugs with our mocks or add features similar to the actual Request and Response objects offered by Node.js and extended by Express.

    Most Recent Release Notes

    License

    Licensed under MIT.

    Install

    npm i @cantremember/node-mocks-http

    DownloadsWeekly Downloads

    1

    Version

    1.5.0

    License

    MIT

    Last publish

    Collaborators

    • cantremember