You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:15:29