【发布时间】:2018-08-07 07:08:40
【问题描述】:
例如:我的 math_util.js 是
var MathUtil = function(){
function add(a,b){
return a + b;
}
return {
add: add
};
}
我将使用 Jest 来测试 add()。所以我会写
test('add', ()=>{
expect(MathUtil().add(1,1)).toBe(2);
});
但我得到MathUtil 未定义或MathUtil() 不是函数。
我也尝试使用require() 或import。但是MathUtil 没有module.export 或export。
那么如何用 Jest 编写 javascript 揭示模块模式的单元测试呢?
注意:我有一个项目,所有脚本都是以显示模块模式编写的,因此将所有脚本都转换为 ES2015 模块可能不切实际。
【问题讨论】:
-
您的测试范围内是否还有
MathUtil函数?看来测试并没有以任何方式导入它。 -
如何将
MathUtil添加到范围?MathUtil没有任何导出,所以我认为我不能使用导入。 -
如果你用这种方式写了一个完整的项目,你的其他文件如何找到你的实用函数?
-
我继承了这个项目,每个文件都是这样写的。所以所有对象都通过
window访问。该应用程序可以访问window.MathUtil,但这对 Jest 不起作用。顺便说一句,MathUtil只是一个示例,展示了如何在这个项目中编写代码。 -
@JaredSmith 为了完整起见:默认的 Jest 环境是 jsdom,其中包含一个
window对象,并且可以使用 setupFiles 来设置诸如全局变量之类的东西......也就是说,我同意模块绝对是最佳实践。
标签: javascript unit-testing jestjs revealing-module-pattern