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

Jest导入外部测试数据调用test.each报错原因是什么?

报错原因

问题出在CommonJS模块的导入导出逻辑不匹配。
你在sum-test-cases.js中使用的是命名导出:exports.sumTestCases = sumTestCases,这种写法导出的整体是一个对象,对象上挂载了sumTestCases属性,属性值才是你写的测试用例数组。
此时你在测试文件里写const sumTestCases = require('./sum-test-cases'),拿到的sumTestCases变量是整个导出对象,也就是{ "sumTestCases": [Array] },和报错信息里提示的传入值完全一致——test.each要求传入数组或者标签模板字面量,你传了个普通对象,自然会报错。
而你直接在测试文件内部定义sumTestCases时,变量本身就是测试用例数组,符合test.each的参数要求,所以能正常运行。

修复方案

两种改法任选其一即可:

  • 改导入语句:用解构赋值取出导出对象里的数组属性
// sum.test.js
const { sumTestCases } = require('./sum-test-cases');
test.each(sumTestCases)('.add($a, $b)', ({a, b, expected}) => {
  expect(a + b).toBe(expected);
});
  • 改导出语句:直接把数组作为模块的导出值
// sum-test-cases.js
const sumTestCases = [
  {a: 1, b: 1, expected: 2},
  {a: 1, b: 2, expected: 3},
  {a: 2, b: 1, expected: 3},
];

module.exports = sumTestCases;

改完之后原来的导入语句不需要调整,就能直接拿到数组,测试可正常运行。


内容的提问来源于stack exchange,提问作者s-hunter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:12:16