Обратите внимание на правильное написание module.exports
- не module.export
.
В вашем файле. js переменная param
не инициализирована, поэтому она получит значение undefined
и будет быть экспортированы с этим значением тоже. Экспортированное значение не изменится, если вы измените param
позже. Экспорт связывает свойство только со значением, а не с переменной. И на самом деле вам даже не нужна локальная переменная. Чтобы динамически изменить значение экспорта, по крайней мере, в Node, вы просто переназначаете свойство на module.exports
.
const fs1 = require('fs');
module.exports = {
test
}
function test (outputParam) {
module.exports.param = fs1.readFileSync(outputParam);
}
Что касается вашего test.spe c. js, вы уже очень близко, чтобы заставить его работать. После создания метода (ов), который не следует вызывать в хабе, просто вызовите функцию test
, передавая реальные параметры. Там не нужно издеваться.
let expect = require('chai').expect;
let fs = require("fs");
let sinon = require("sinon");
let filejs = require('./file.js');
it('should run only the outer function and test if variable param is set to `this is my file content` ' ,function() {
let someArg ="file.xml";
sinon.stub(fs,'readFileSync').callsFake ((someArg) => {
return "this is my file content";
});
filejs.test(someArg);
expect(filejs.param).to.equal('this is my file content');
});