在玩笑测试用例中转换变量时会被提升吗?
will it be hoisted when a variable is transformed in jest test case?
我正在开发和测试 Array.isArray 模块。
isArray 模块
export isArray function (arg) {
if (Array.isArray) {
return Array.isArray(arg);
}
return Object.prototype.toString.call(arg) === '[object Array]';
}
isArray TC
describe('isArray test', () => {
describe('[native] test', () => {
test('[] => true', () => {expect(isArray([])).toBe(true); });
});
describe('[native not exist] test', () => {
delete Array.isArray;
test('[] => true', () => {expect(isArray([])).toBe(true); });
});
});
删除Array.isArray阶段似乎正在吊装。
所以,所有 TC 都不是 isArray 模块的原生。
描述相位在 TC 中提升?
请问mw怎样才能不影响delete phase
“提升”在这里不是正确的术语 – 您只是删除全局 属性 而没有将其重置为原始值,并且这将在测试用例之间持续存在。
最简单的修复方法是手动重置对象:
describe("[native not exist] test", () => {
test("[] => true", () => {
const originalIsArray = Array.isArray; // Grab original function
delete Array.isArray; // Remove it
expect(isArray([])).toBe(true); // Test
Array.isArray = originalIsArray; // Undo the removal
});
});
我正在开发和测试 Array.isArray 模块。
isArray 模块
export isArray function (arg) {
if (Array.isArray) {
return Array.isArray(arg);
}
return Object.prototype.toString.call(arg) === '[object Array]';
}
isArray TC
describe('isArray test', () => {
describe('[native] test', () => {
test('[] => true', () => {expect(isArray([])).toBe(true); });
});
describe('[native not exist] test', () => {
delete Array.isArray;
test('[] => true', () => {expect(isArray([])).toBe(true); });
});
});
删除Array.isArray阶段似乎正在吊装。 所以,所有 TC 都不是 isArray 模块的原生。 描述相位在 TC 中提升? 请问mw怎样才能不影响delete phase
“提升”在这里不是正确的术语 – 您只是删除全局 属性 而没有将其重置为原始值,并且这将在测试用例之间持续存在。
最简单的修复方法是手动重置对象:
describe("[native not exist] test", () => {
test("[] => true", () => {
const originalIsArray = Array.isArray; // Grab original function
delete Array.isArray; // Remove it
expect(isArray([])).toBe(true); // Test
Array.isArray = originalIsArray; // Undo the removal
});
});