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

Jest中typeof检测函数是否存在始终返回false,求排查

解决Jest测试中typeof判断handleSubmit始终返回false的问题

看起来你的测试代码里有几个关键问题导致了这个结果,我来帮你逐一排查:

1. 错误的导入语法

你当前的导入语句混用了CommonJS解构和字符串路径,这在ES模块环境下完全无效:

const { handleSubmit } = '../client/js/formHandler'; // 错误写法

应该改成标准的ES模块import语法:

import { handleSubmit } from '../client/js/formHandler';

2. 导入顺序错误

babel-polyfill的导入必须放在所有其他代码的最前面,确保它先加载并生效:

import "babel-polyfill";
import { handleSubmit } from '../client/js/formHandler';

3. 确认formHandler.js的导出方式

还要保证你的formHandler.js里正确导出了handleSubmit函数:

  • 如果是命名导出,写法应该是:
    // formHandler.js
    export const handleSubmit = async () => {
      // 你的函数逻辑
    };
    
  • 如果是默认导出,测试文件的导入要对应调整:
    // 测试文件里的导入
    import handleSubmit from '../client/js/formHandler';
    

修改后的完整测试代码

import "babel-polyfill";
import { handleSubmit } from '../client/js/formHandler';

describe('Testing if function exists', () => {
  test('Should return true', async () => {
    // 可以简化成更直观的写法
    expect(typeof handleSubmit).toBe('function');
  });
});

额外排查点

  • 检查文件路径是否正确:确认../client/js/formHandler确实指向你的formHandler.js文件,路径层级错误会导致导入结果为undefined,typeof判断自然返回"undefined"而不是"function"。
  • 若项目使用了特殊的Jest配置(比如TypeScript、自定义模块解析),可以检查jest.config.js里的moduleFileExtensions或moduleDirectories设置,确保ES模块能被正确识别。

内容的提问来源于stack exchange,提问作者Stefan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:07:34