我很困惑如何在将IIFE导入到我的jest文件中时对其进行模拟。 我有一个JS文件,其中包含除IIFE之外要测试的多个功能。在我的测试中导入JS文件时,由于IIFE中使用的文档对象而引发错误。
我不想测试该IIFE功能。有什么办法可以避免这种玩笑。
我尝试使用setupFiles(在Jest配置中)模拟文档,但是没有运气。
也在我的测试文件中尝试了下面的代码来模拟它,但是再没有运气了。
jest.mock('./myModule.js', () => (
{
...(jest.requireActual('./myModule.js')),
otherFn: () => {}
}
));
我只是开玩笑的初学者,只是想避免测试该IIFE。
有什么方法可以避免在导入时执行IIFE或对其进行模拟吗?
答案 0 :(得分:1)
导入文件后,IIFE将始终运行。
您可以模拟整个文件,使其永远不会运行,但是您将无法访问其中定义的功能。
没有一种方法可以仅模拟IIFE,同时仍然能够访问同一文件中定义的其他函数,因为任何导入代码的代码(包括jest.requireActual
)都将运行IIFE。
听起来像您拥有两个选项一样,是为了设置测试环境,以便IIFE在运行时不会引发错误,或者将功能移至其自己的模块,以便您可以独立于IIFE导入和测试它们
答案 1 :(得分:0)
添加包装器
(function (factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory();
} else {
factory()();
}
}(function() {
// you code
return function () {}
}));