ArtoAle ArtoAle - 22 days ago 11
Javascript Question

How to unit test 'private' utility function in nodejs

I'm currently writing some tests for a nodejs application.
assume that I have a module like this:

module.exports = function myModule(moduleParam) {
var someVar;
....
....
function helper(param) {
return param + someVar;
}
return {
doSomething: function (bar) {
....
....
var foo = helper(bar);
....
....
}
};
};


Assume that the 'helper' function is useful only within the module and should not be exposed to the outside.

What is the 'best practice' for testing it? (of course, I can test the doSomething function as a whole,but this way, the 'helper' function is tested in a particular situation, in a 'black-box' fashion).

I'm using nodeunit as testing framework, for that metter, but I can change it on need.

Answer Source

You don't test it. Unit testing is black box testing. This means that the only thing you test is the public interface aka contract.

Private functions such as these only can happen from refactoring public ones.

So if you consequently use TDD your private functions are implicitly tested.

If this feels wrong it's most often because your structure is wrong. Then you should think about moving your private stuff to an extra module.