/bogus

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

Primary LanguageJavaScript

bogus

Build Status

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

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, function(){
                // load Car module, that depends on SteeringWheel
                bogus.requireWithStubs('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');
                });
            });
        });
    });
});

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