使用硬编码依赖项对普通 JS 进行单元测试

问题描述 投票:0回答:1

想象一下我有一个遗留的 JS 应用程序,其代码如下:

var thing = new Thing();
function do_thing() {
  // Logic to test here
}
// export module

此文件还包含我需要进行单元测试的许多重要计算,而无需重构整个内容。

我尝试用玩笑来测试它。

/**
 * @jest-environment jsdom
 */
const mod = require('thing.js');

test('Test', () => {
  mod.do_thing();
});

但是得到

ReferenceError:事物未定义

如果

var thing
调用了其他文件中定义的函数,即使删除
do_thing
也会导致错误,这在遗留项目中通常是这种情况。

参考错误:foo() 未定义

有什么建议吗?可以使用类似的

jest.fn
jest.mock
来模拟事物,而无需对应用程序进行大量重构吗?

jestjs
1个回答
0
投票

使用

global.Thing
的解决方案:



/**
 * @jest-environment jsdom
 */
global.Thing = jest.fn();
const mod = require('thing.js');

test('Test', () => {
  mod.do_thing();
});
© www.soinside.com 2019 - 2024. All rights reserved.