如何解决如何在没有“全局”的方法中设置全局变量从测试
我正在尝试设置在某些方法中使用的全局变量,我需要使用 mocha 进行测试。
在我要测试的方法中,我使用了一个全局变量 (global.testArray
),该变量已在服务初始化中设置为另一个文件中的空数组 (global.testArray = []
)。
async function getRandomVal() {
console.log('------------------------------------');
console.log(testArray)
console.log(global.testArray)
console.log('------------------------------------');
(...)
}
这是我正在使用的测试
const rewire = require('rewire');
// Files needed to run the tests
let testedFile = rewire(`${ __basePath }file`);
describe('Testing methods in file',function () {
beforeEach(async function () {
global.redis = {};
global.testArray = null;
testedFile = rewire(`${ __basePath }file`); //need to rewire it due to some redis behaviors in other tests
});
describe('Test getRandomVal()',function () {
it('It should set global var to null',async function () {
global.testArray = null;
let result = await testedFile.getRandomVal();
expect (...);
});
it('It should set global var to an empty array',async function () {
global.testArray = [];
// Also tried testedFile.__set__('global.testArray',[]);
let result = await testedFile.getRandomVal();
expect (...);
});
it('It should set global var to an array with elements',async function () {
global.testArray = ['1','2'];
// Also tried testedFile.__set__('global.testArray',[]);
let result = await testedFile.getRandomVal();
expect (...);
});
});
});
问题是该变量在整个上下文中似乎是一个全局变量,但在文件/方法中并没有这样描述......这是结果。
------------------------------------
null
null
------------------------------------
✓ It should set global var to null
------------------------------------
null
[]
------------------------------------
✓ It should set global var to an empty array
------------------------------------
null
[ '1','2' ]
------------------------------------
1) It should set global var to an array with elements
似乎只有全局变量是可访问的,但由于我没有这样引用它,它在测试中没有得到模拟的值......
有什么方法可以在不使用方法中的 global.<variable>
表示法的情况下强制该变量按照我想要的方式设置为这些测试,而是在 beforeEach 中保持重新连接?
类似于 testedFile.__set__('testArray',[]);
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。