空手道嵌入式表达式无法按预期的方式运行xml属性

时间:2018-03-07 12:57:51

标签: xml karate

这是:3_PostData_Request.xml



<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
    <S:Body>
        <SucceededGetData RequestID="#(request_uuid)">some text</SucceededGetData>
        <MessageDelivered OfferID="#(request_uuid)" />

    </S:Body>
</S:Envelope>
&#13;
&#13;
&#13;

这是方案文件:

&#13;
&#13;
Scenario: test
    * def UUID = function(){ return java.util.UUID.randomUUID() }
    * def request_uuid = call UUID
    * def req = read('classpath:3_PostData_Request.xml')
    * print req
&#13;
&#13;
&#13;

结果如下:

&#13;
&#13;
<S:Body>
    <SucceededGetData RequestID="ab5bbb38-d462-42f5-afd2-49c47fd59365">some text</SucceededGetData>
    <MessageDelivered OfferID="#(request_uuid)"/>
  </S:Body>
</S:Envelope>
&#13;
&#13;
&#13;

我想知道为什么会这样。为什么空手可以替换#(request_uuid)的xml元素,其中包含一些文本,为什么不替换没有任何文本的元素。如何在无聊的情况下实现替换。我使用空手道0.7.0.1。谢谢!

我在他们的Git仓库中也添加了一个问题。等待他们的回复。 https://github.com/intuit/karate/issues/341

1 个答案:

答案 0 :(得分:1)

是的,这是一个错误!你有一个解决方法:

* set response /Envelope/Body/MessageDelivered/@OfferID = request_uuid