Lorenzo Nardi
Lorenzo Nardi

Reputation: 135

karate doesn't match xml obtained from function

I have to verify an XML fragment obtained from a function, but matches fails also when should.

To explain my needs, i have to test a web service that in response sends a soap message containing into the body an xml fragment encoded in base64. In my karate test i decode that fragment with a function and verify it with a fuzzy match, but every match fails also when good.

I made a test where the XML 'A' is explicity defined and the XML 'B' is obtained from a function where A == B. Then i define a XML 'C' that should match both, but instead matches only the one explicity defined.

Feature: 

Background:

* def buildXml = 
"""
function(param){ 
    return '<root><hello>world</hello><foo>bar</foo></root>';
}
"""

Scenario: 

* def a = <root><hello>world</hello><foo>bar</foo></root>
* def b = buildXml()
* def c =
"""
<root>
    <hello>world</hello>
    <foo>#ignore</foo>
</root>
"""

* match a == b
* match a == c
* match b == c

Last match fails, but should pass.

Upvotes: 1

Views: 77

Answers (1)

Peter Thomas
Peter Thomas

Reputation: 58058

Just one small change, and you are good:

* xml b = buildXml()

Reason: https://github.com/intuit/karate#type-conversion

Upvotes: 2

Related Questions