Я использую Jest для написания тестового примера.
Файл JavaScript, который мне нужно протестировать, содержит некоторые глобальные переменные, и я хочу получить и установить значение этих глобальных переменных. Я попытался экспортировать глобальные переменные и использовать непосредственно в test.js. Однако это не работает. Есть простой код:
simple.js:
var someGlobalVariable = '';
//Basic Function with no return type
function firstFunction() {
someGlobalVariable = 'hello';
}
//Function which returns String
function secondFunction() {
//firstFunction();
console.log(someGlobalVariable);
return someGlobalVariable;
}
module.exports.firstFunction= firstFunction;
module.exports.secondFunction = secondFunction;
module.exports.someGlobalVariable = someGlobalVariable;
simple.test.js:
const jstester = require ('./Test');
test('secondFunction', ()=>{
//jstester.firstFunction();
jstester.someGlobalVariable = 'world';
console.log(jstester.someGlobalVariable);
expect(jstester.secondFunction()).toMatch('world');
});
Результат:
FAIL ./Test.test.js
✕ secondFunction (19ms)
● secondFunction
expect(received).toMatch(expected)
Expected value to match:
"world"
Received:
""
5 | jstester.someGlobalVariable = 'world';
6 | console.log(jstester.someGlobalVariable);
> 7 | expect(jstester.secondFunction()).toMatch('world');
| ^
8 | });
9 |
10 |
at Object.toMatch (Test.test.js:7:39)
console.log Test.test.js:6
world
console.log Test.js:12
Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 total
Snapshots: 0 total
Time: 0.961s, estimated 1s
Ran all test suites.
someGlobalVariable в simple.js по-прежнему равен ". Но я хочу, чтобы simple.test.js изменил значение на" world ".
Есть ли способ изменить значение напрямую? Или я должен добавить функцию set и get в simple.js?