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

Jest报错‘Not a function’但函数已定义的解决方法

解决Jest测试中TypeError: isVowel is not a function问题及测试断言错误

问题根源及修复步骤:

  1. 模块未导出导致的函数引用错误
    你的isVowel函数没有对外导出,导致测试文件通过require无法获取到该函数。需要在函数所在文件(比如isVowel.js)末尾添加CommonJS导出语句:

    function isVowel(ch) {
      ch = ch.toUpperCase();
      return ch == "A" || ch == "E" || ch == "I" || ch == "O" || ch == "U";
    }
    
    // 添加导出,让测试文件能引用到该函数
    module.exports = isVowel;
    

    如果你使用ES模块规范,也可以用export default isVowel;,同时需要确保项目配置支持ES模块(比如在package.json中设置"type": "module")。

  2. 测试断言逻辑错误
    原测试代码中expect(ch).toBe("A")不符合函数实际返回值:isVowel函数返回的是布尔值(true/false),而非字符"A"。需要修正断言为布尔值判断:

    const isVowel = require("./isVowel");
    test("a is vowel", () => {
      const result = isVowel("a");
      expect(result).toBe(true);
    });
    

补充测试用例(可选)

为了覆盖更多场景,可以添加以下测试:

// 测试大写元音字母
test("E is vowel", () => {
  expect(isVowel("E")).toBe(true);
});

// 测试非元音字母
test("b is not vowel", () => {
  expect(isVowel("b")).toBe(false);
});

// 测试大写非元音字母
test("Z is not vowel", () => {
  expect(isVowel("Z")).toBe(false);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:50:25