I'm trying to figure out on how to test internal (i.e. not exported) functions in nodejs (preferably with mocha or jasmine). And i have no idea!
Let say I have a module like that:
function exported(i) {
return notExported(i) + 1;
}
function notExported(i) {
return i*2;
}
exports.exported = exported;
And the following test (mocha):
var assert = require('assert'),
test = require('../modules/core/test');
describe('test', function(){
describe('#exported(i)', function(){
it('should return (i*2)+1 for any given i', function(){
assert.equal(3, test.exported(1));
assert.equal(5, test.exported(2));
});
});
});
Is there any way to unit test the notExported
function without actually exporting it since it's not meant to be exposed?
Best Answer
The rewire module is definitely the answer.
Here's my code for accessing an unexported function and testing it using Mocha.
application.js:
test.js: