stubbit

0.2.0 • Public • Published

Stubbit

NPM version Build status

Why?

Proxyquire requires (no pun intended) you to define the proxies that you want to use in place of your dependencies. This is quite cumbersome, which is where Stubbit comes into play. Stubbit wraps this mechanism, automatically creating SinonJS stubs of your dependencies.

Installation

npm install stubbit

Usage

Require the module:

var stubbit = require('stubbit');

The stubbit object now has two public methods available:

stubbit.requireWithStubs(module, ...dependencies)

Requires a module and stubs its dependencies.

Here is a quick example with two modules and then the test.

foo.js:

var bar = require('bar');

module.exports = {
    foo: function () {
        return 'foo' + bar.print();
    }
}

bar.js:

module.exports = {
    print: function () {
        return 'bar';
    }
};

foo.test.js:

var stubbit = require('stubbit');
var foo = stubbit.requireWithStubs('./foo', './bar');

/* The bar module is now stubbed... */

stubbit.getStub(module, dependency [, method])

Returns the stub of a module dependency. Optionally, you can provide the stubbed method name as an argument to get access to the stubbed method directly.

Example (with the same modules as the example above):

foo.test.js:

var stubbit = require('stubbit');

var foo = stubbit.requireWithStubs('./foo', './bar');

/* Get entire stub */
var stubbedBar = stubbit.getStub(foo, './bar');

/* Or get stubbed method directly */
var stubbedBarPrintMethod = stubbit.getStub(foo, './bar', 'print');

Full Example With Mocha

meal.js

module.exports = {
  get: function () { return 'vegetables'; }
};

person.js

var meal = require('./meal');

module.exports = {
  getBreakfastWishes: function () {
    return 'I want ' + meal.get() + ' for breakfast';
  }
};

person.spec.js

var stubbit = require('stubbit');
var assert = require('assert');

describe('Person', function () {
  it('printBreakfast without stub', function () {
    var person = stubbit.requireWithStubs('./person');
    assert.equal(person.getBreakfastWishes(), 'I want vegetables for breakfast');
  });

  it('printBreakfast with stub', function () {
    var person = stubbit.requireWithStubs('./person', './meal');
    stubbit.getStub(person, './meal', 'get').returns('bacon');
    assert.equal(person.getBreakfastWishes(), 'I want bacon for breakfast');
  });
});

Readme

Keywords

none

Package Sidebar

Install

npm i stubbit

Weekly Downloads

1

Version

0.2.0

License

ISC

Last publish

Collaborators

  • arildwtv