Jest测试模块内导出函数时提示test2不是函数的问题求助
问题解决:Jest无法测试模块内函数的TypeError问题
问题根源
你定义的test2module是一个未执行的立即执行函数表达式(IIFE),导出后它只是一个函数引用,而非包含test2方法的对象。测试代码里调用test2module.test2时,自然会触发“不是函数”的TypeError。
修复步骤
修改main.js中的test2module定义,在IIFE末尾加上(),让它立即执行并返回包含test2的对象:
//this code passes the test const test1=(text)=>{ text += " and goofy"; return text; } // 修复:添加()让IIFE立即执行 const test2module = (()=>{ const test2 = (num) =>{ let myNum = num; myNum ++; return myNum; }; return {test2}; })() // 这里的()是关键,触发函数执行 //no code beyond this line module.exports = {test1, test2module};
验证结果
修改后执行测试命令:
npm run test main.test.js
就能得到预期的通过结果:
$npm run test main.test.js Test Suites: 1 passed, 1 total Tests: 3 passed, 3 total
补充说明
立即执行函数表达式(IIFE)的核心是立即执行,只有通过末尾的()触发执行,它才会返回你定义的包含test2的对象。如果不执行,它只是一个普通函数,自然没有test2属性。
内容的提问来源于stack exchange,提问作者manski
相关产品推荐
相关产品推荐

