Jest报错‘Not a function’但函数已定义的解决方法
解决Jest测试中
TypeError: isVowel is not a function问题及测试断言错误 问题根源及修复步骤:
模块未导出导致的函数引用错误
你的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")。测试断言逻辑错误
原测试代码中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
相关产品推荐
相关产品推荐

