Nectar of the Programming Masses
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    boguspublic

    bogus Build Status Dependency Status Dependency status

    bogus is a small utility for stubbing dependencies when testing RequireJS based projects

    Link Seam

    In Working Effectively with Legacy Code, Michael Feathers describes Seams. In the vernacular of that book, bogus would be considered a Link Seam.

    Getting bogus

    You can install bogus into your project using either npm or bower

    $ npm install bogus --save-dev

    or

    $ bower install bogus --save-dev

    Usage

     
    // SteeringWheel
    define('SteeringWheel', function(){
        function SteeringWheel(){
            this.color = 'black';
        }
     
        return SteeringWheel;
    });
     
    // Car
    define('Car', ['SteeringWheel'], function(SteeringWheel){
        function Car(){
            this.steeringWheel = new SteeringWheel();
        }
     
        Car.prototype.getSteeringWheelColor = function getSteeringWheelColor(){
            return this.steeringWheel.color;
        };
     
        return Car;
    });
     
    // load bogus
    define([
        'bower_components/bogus/bogus'  // this is ofc. dependent on where you installed it
    ], function(
        bogus
    ){
        describe('myModule', function{
            var Car;
     
            beforeEach(function(done){
                var fakeSteeringWheel = function(){
                    this.color = 'blue';
                };
     
                // stub out a dependency (SteeringWheel) with our fake
                bogus.stub('SteeringWheel', fakeSteeringWheel);
     
                // load Car module, that depends on SteeringWheel
                bogus.require('Car', function(module){
                    Car = module;
                    done();
                });
            });
     
            afterEach(function(done){
                bogus.reset(done);
            });
     
            describe('Car', function(){
                describe('getSteeringWheelColor method', function(){
                    it('should return the actual color of the SteeringWheel', function(){
                        var car = new Car();
     
                        assert.equal(car.getSteeringWheelColor(), 'blue');
                    });
                });
            });
        });
    });

    Promises

    Both bogus.require and bogus.reset return promises. The beforeEach and afterEach in the example above can be written as:

    beforeEach(function(){
        var fakeSteeringWheel = function(){
            this.color = 'blue';
        };
     
        bogus.stub('SteeringWheel', fakeSteeringWheel);
     
        return bogus.require('Car').then(function(module){
            Car = module;
        });
    });
     
    afterEach(function(){
        return bogus.reset();
    });

    Stub multiple dependencies

    If you're stubbing several dependencies, you can pass a map of them to stub

    var firstFake = {};
    var secondFake = {};
     
    bogus.stub({
        'path/to/first/dependency': firstFake,
        'path/to/second/dependency': secondFake
    });

    Development

    You can run the tests with

    $ npm test

    or with

    $ mocha

    if you have mocha installed as a global

    See also

    License

    MIT: http://mrgnrdrck.mit-license.org

    Keywords

    none

    install

    npm i bogus

    Downloadsweekly downloads

    22

    version

    1.0.0

    license

    MIT

    repository

    githubgithub

    last publish

    collaborators

    • avatar