Как читать элементы CDATA с использованием карате DSL - PullRequest
0 голосов
/ 06 сентября 2018

Мой XML-запрос выглядит примерно так:

  • def ref = ref.substring (0, end)

  <ns:complete>

     <ns:identifier>23265</ns:identifier>

     <ns:taskData><![CDATA[<sch:SubscriptionApprovalResponse xmlns:sch="http://workflow.subscription.apimgt.carbon.wso2.org">

    <sch:status>APPROVED</sch:status>

    <sch:workflowExternalRef>#(ref)</sch:workflowExternalRef>

    <sch:description></sch:description>

    </sch:SubscriptionApprovalResponse>]]></ns:taskData>

  </ns:complete>

Я передаю # (ref) извне в теле CDATA, но он не читает его.

Что-то не так, что я делаю?

1 Ответ

0 голосов
/ 06 сентября 2018

Да, потому что вы пытаетесь использовать встроенные выражения в разделе CDATA. Я не могу сказать без полного рабочего примера.

Вы должны сделать это в 2 шага или использовать строку replace: https://github.com/intuit/karate#replace

* def baz = 'blah'
* def foo = <bar>#(baz)</bar>
* def xml = <foo><Response><![CDATA[#(foo)]]></Response></foo>
* match xml == <foo><Response><![CDATA[<bar>blah</bar>]]></Response></foo>

* def xml = <foo><Response><![CDATA[<bar>@@baz@@</bar>]]></Response></foo>
* replace xml.@@baz@@ = 'blah'
* match xml == <foo><Response><![CDATA[<bar>blah</bar>]]></Response></foo>
...