我在groovy中读取后跟字符串并断言值。
[Event[attributes={id=c8475082-fa09-4b99-89c5-9b839d8321f6, name=updateDate, eventType=updateDate};
value=[eventTime[attributes={};
value=[2014-11-07T04:35:01Z]],
eventAttributes[attributes={};
value=[EventAttribute
[attributes={};
value=[name[attributes={}; value=[userId]],
value[attributes={};
value=[1626383939]]]]]]]]]
我假设上面的整个字符串代表一个内部列表,所以我尝试如下
assert ["userId"] == MyList.Event.eventAttributes.EventAttribute.value.text()
然后它出现以下错误
groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.text() is applicable
for argument types: () values: []
Possible solutions: get(int), get(int), set(int, java.lang.Object), set(int, java.lang.Object), getAt(java.util.Collection), getAt(java.lang.String)
XML
.....
<Event id="c8475082-fa09-4b99-89c5-9b839d8321f6" name="updateDate" eventType="updateDate">
<eventTime>2014-10-17T04:17:19Z</eventTime>
<eventAttributes>
<EventAttribute>
<name>userId</name>
<value>1626383939</value>
</EventAttribute>
</eventAttributes>
</Event>
......
我该怎么做
答案 0 :(得分:2)
因为您对包含EventAttribute
的{{1}}:s感兴趣,您最好只搜索它,断言,找到它然后检查值。我的猜测是,属性的顺序可能是随机的。
name='userId
来自XMLParser的toString对我来说是相当难以理解的。您最好使用XML作为您的心智模型来找到您的路径。
答案 1 :(得分:0)
spread运算符可以对数组的每个元素应用方法调用。
assert [“userId”] == MyList.Event.eventAttributes.EventAttribute.value * .text()