Вы должны использовать rewire package для set
или get
приватных переменных, определенных в области видимости модуля.
Например,
controller.js
:
var k,
b = 10;
const controller = {
myFunction: function() {
k = 'Test failed';
if (b == 10) {
k = 'Test Passed';
}
},
};
module.exports = controller;
controller.test.js
:
const rewire = require('rewire');
const { expect } = require('chai');
describe('61384893', () => {
it('should pass', () => {
const controller = rewire('./controller');
controller.myFunction();
expect(controller.__get__('k')).to.be.equal('Test Passed');
});
it('should pass too', () => {
const controller = rewire('./controller');
controller.__set__('b', 1);
controller.myFunction();
expect(controller.__get__('k')).to.be.equal('Test failed');
});
});
Результаты модульного теста со 100% покрытием:
61384893
✓ should pass (45ms)
✓ should pass too
2 passing (66ms)
---------------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
---------------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
controller.js | 100 | 100 | 100 | 100 |
---------------|---------|----------|---------|---------|-------------------
исходный код: https://github.com/mrdulin/expressjs-research/tree/master/src/stackoverflow/61384893