How to test private functions in unit tests with Mocha and Node.js?

Sometimes, we want to test private functions in unit tests with Mocha and Node.js.

In this article, we’ll look at how to test private functions in unit tests with Mocha and Node.js.

How to test private functions in unit tests with Mocha and Node.js?

To test private functions in unit tests with Mocha and Node.js, we can use the rewire module.

To install it, we run

npm i rewire

Then we use it by writing

const rewire = require("rewire");
const foobar = rewire("./foobar");

describe("private_foobar1", () => {
  const privateFoobar1 = foobar.__get__("privateFoobar1");

  it("should do stuff", (done) => {
    const stuff = privateFoobar1(filter);
    should(stuff).be.ok;
  });
});

to import the ./foobar module that we want to test.

And then we use __get__ to get the privateFoobar1 function from ./foobar.

Then we call the returned privateFoobar1 in our test.

Conclusion

To test private functions in unit tests with Mocha and Node.js, we can use the rewire module.