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

Karate框架中如何在JS函数内使用外部声明的变量

问题解决:Karate中eval内JS函数遍历外部数组并正确打印对象

问题分析

你遇到的控制台输出[object Object]并非循环识别不了数组名称,而是直接打印JavaScript对象时,默认会输出类型字符串而非对象具体内容。另外代码里的Var是笔误,应改为小写var,但这不是核心问题。

解决方案

1. 修正eval内的打印方式,序列化对象

将打印语句改为console.log(JSON.stringify(md)),把对象转为JSON字符串即可查看具体内容:

* def results = response.results
* eval
"""
var md; // 修正Var为小写var
for(var id in results){
  md = results[id].data;
  console.log(JSON.stringify(md)); // 序列化对象后打印
}
"""

2. 使用Karate原生循环替代eval(更推荐)

Karate提供了简洁的原生循环语法,无需在eval中编写复杂JS,代码更易维护:

* def results = response.results
* karate.forEach(results, function(item) {
    var md = item.data;
    console.log(JSON.stringify(md));
  })

3. 使用for...of遍历数组(更符合数组遍历的JS语法)

如果坚持在eval中写JS,用for...of遍历数组元素更直观,无需处理索引:

* def results = response.results
* eval
"""
for(var item of results){
  var md = item.data;
  console.log(JSON.stringify(md));
}
"""

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:22:03