mockery
Version:
Simplifying the use of mocks with Node.js
62 lines (57 loc) • 2.43 kB
JavaScript
var vows = require('vows'),
assert = require('assert'),
mockery = require('../mockery'),
sinon = require('sinon');
var mock_fake_module = {
foo: function () {
return 'mocked foo';
}
};
var tests = {
"when an intermediary module is involved": {
topic: function() {
return null;
},
"and mockery is not enabled requiring the intermediary causes the original to be used": function () {
var intermediary = require('./fixtures/intermediary');
assert.equal(intermediary.bar(), 'real foo');
},
"and mockery is enabled without the clean cache option": {
topic: function () {
mockery.registerMock('./fake_module', mock_fake_module);
mockery.registerAllowable('./fixtures/intermediary');
mockery.enable({ useCleanCache: false });
var i = require('./fixtures/intermediary');
mockery.resetCache();
mockery.disable();
return i;
},
"requiring the intermediary causes the original to be used": function (intermediary) {
assert.equal(intermediary.bar(), 'real foo');
},
"then mockery is enabled with the clean cache option": {
topic: function () {
mockery.registerMock('./fake_module', mock_fake_module);
mockery.registerAllowable('./fixtures/intermediary');
mockery.enable({ useCleanCache: true });
var i = require('./fixtures/intermediary');
mockery.resetCache();
return i;
},
"requiring the intermediary causes the mock to be used": function (intermediary) {
assert.equal(intermediary.bar(), 'mocked foo');
},
"then mockery is disabled": {
topic: function() {
mockery.disable();
return require('./fixtures/intermediary');
},
"requiring the intermediary causes the original to be used": function (intermediary) {
assert.equal(intermediary.bar(), 'real foo');
}
}
}
}
}
};
vows.describe('intermediary').addBatch(tests).export(module);