stubbit
v0.2.0
Published
A wrapper library for stubbing dependencies based on proxyquire and SinonJS.
Downloads
2
Readme
Stubbit
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');
});
});