将数组从Groovy Step传递到ReadyApi 2.3.0中的SoapRequest

时间:2018-03-13 14:45:21

标签: arrays soap groovy soapui ready-api

我将多个日期传递给我的请求,从groovy我返回这样的内容(日期各不相同):[2018-06-11, 2018-06-13, 2018-06-11, 2018-06-14, 2018-06-11, 2018-06-14]

在版本2.3.0之前我使用下面的脚本访问每个元素(这个给出了2018-06-11):

${Groovy-CheckIn-CheckOut#result#$[0]}

但是在最新版本中它返回空,GetData也不再将其识别为数组。

是否有其他方式从请求访问数组,它是否与JSON版本更新有关,虽然我没有使用它?

P.S:我不确定是否有一个我应该等待的错误或过时的功能我不能再使用,并且不知道如何在当前状态下检索数据...

2 个答案:

答案 0 :(得分:1)

尝试将其添加到测试运行上下文中,而不是您的脚本return

context['array'] = myarray

然后使用内联Groovy脚本而不是属性扩展。即,使用${=a.getB()}而不是${a#b}。在我们的案例中:

${=context['array'][0]}

我通常更喜欢内联脚本而不是属性扩展,因为我可以编写任何我想要的Groovy,但是有一个问题,因为SoapUI无法正确地转义大括号。所以不要尝试像:

${=context['array'].find {it > new Date()} }

如果您发现确实想要这样做,可以使用内联使用的任何Closures预加载上下文:

context['array'] = myarray
context['isFuture'] = { it > new Date() }

然后内联:

${=context['array'].find context['isFuture'] }

答案 1 :(得分:0)

在与smartbear支持的一些对应之后,似乎不再支持,事实上他们从未做过,正式,虽然传递类似[123,4]的东西仍然有效,所以它是熊与日期。 最后,经过一些浏览后,我使用了JsonOutput库的转换,因为它是最少量更改的修复,并且在请求的接收端完全没有任何更改:
return new groovy.json.JsonOutput().toJson( [...] )