Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sinon function stubbing: How to call "own" function inside module

I am writing some unit tests for node.js code and I use Sinon to stub function calls via

var myFunction = sinon.stub(nodeModule, 'myFunction');
myFunction.returns('mock answer');

The nodeModule would look like this

module.exports = {
  myFunction: myFunction,
  anotherF: anotherF
}

function myFunction() {

}

function anotherF() {
  myFunction();
}

Mocking works obviously for use cases like nodeModule.myFunction(), but I am wondering how can I mock the myFunction() call inside anotherF() when called with nodeModule.anotherF()?

like image 259
alsdkjasdlkja Avatar asked Feb 02 '16 19:02

alsdkjasdlkja


1 Answers

You can refactor your module a little. Like this.

var service = {
   myFunction: myFunction,
   anotherFunction: anotherFunction
}

module.expors = service;

function myFunction(){};

function anotherFunction() {
   service.myFunction(); //calls whatever there is right now
}
like image 150
Yury Tarabanko Avatar answered Oct 13 '22 10:10

Yury Tarabanko