2016-04-29 10 views
0

Ich versuche zu überprüfen, dass xmlns: ns1 = "http://thomas-bayer.com/blz/" in der folgenden XML mit Jayway Ruhe-versichert ist XML support.Verifizieren eines XML-Attributs mit Jayway-Ruhe-versichert

<?xml version="1.0" encoding="utf-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
    <ns1:getBankResponse xmlns:ns1="http://thomas-bayer.com/blz/"> 
     <ns1:details> 
     <ns1:bezeichnung>ABK-Kreditbank</ns1:bezeichnung> 
     <ns1:bic>ABKBDEB1XXX</ns1:bic> 
     <ns1:ort>Berlin</ns1:ort> 
     <ns1:plz>10789</ns1:plz> 
     </ns1:details> 
    </ns1:getBankResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

Wie ich es, zu verstehen

xmlns:ns1="http://thomas-bayer.com/blz/" 

ist ein Attribut von

<ns1:getBankResponse 

Die @ prefix sollte ein Attribut passend zu der Schaft nach dem @ zurückzukehren.

Angenommen, xmlString der obigen SOAP-Antwort XML, alle folgenden zurückgekehrt null gleich ist:

Jede Hilfe wäre sehr geschätzt
String nameSpace1 = given(xmlString).getString("[email protected]:ns1"); 
String nameSpace2 = given(xmlString).getString("[email protected]"); 
String nameSpace3 = given(xmlString).getString("[email protected]"); 
List<String> nameSpace = given(xmlString).get("Envelope.Body.getBankResponse[0][email protected]:ns1"); 
List<String> nameSpace = given(xmlString).get("Envelope.Body.getBankResponse[0][email protected]"); 
List<String> nameSpace = given(xmlString).get("Envelope.Body.getBankResponse[0][email protected]"); 

.

PS. Ich weiß, dass Ruhe-versichert in erster Linie RESTful APIs betrifft, aber es kann verwendet werden, um SOAP zu testen.

Antwort

1

In der kommenden Version von REST Assured (wahrscheinlich 2.9.1) können Sie XmlPath so konfigurieren, dass er Namespaces nicht erkennt. Dies bedeutet also, Sie so tun können:

XmlPath xmlPath = new XmlPath(xmlResponse).using(xmlPathConfig().namespaceAware(false)); 
assertThat(xmlPath.getString("soapenv:Envelope.soapenv:Body.ns1:[email protected]:ns1"), equalTo("http://thomas-bayer.com/blz/")); 

Sie können dies versuchen heute, indem je nach Version 2.9.1-SNAPSHOT nach dem folgenden Maven Repository hinzugefügt haben:

<repositories> 
     <repository> 
      <id>sonatype</id> 
      <url>https://oss.sonatype.org/content/repositories/snapshots/</url> 
      <snapshots /> 
     </repository> 
</repositories> 
+0

Danke. Genau das, wonach ich gesucht habe. – MikeJRamsey56

0

teilweise gelöst es so aus:

XmlPath xmlPath = new XmlPath(xmlResponse).using(xmlPathConfig().declaredNamespace("ns1", "http://thomas-bayer.com/blz/")); 

// Then 

assertThat(xmlPath.getString("Envelope.Body.getBankResponse.ns1:details.ns1:bezeichnung.text()"), equalTo("ABK-Kreditbank")); 

sagen, dass ich da teilweise, während er das tut Raum Name beweisen ns1 wird verwendet, und deshalb definiert werden müssen gültig sein, dass nicht zeigt:

xmlns:ns1="http://thomas-bayer.com/blz/" 

weil der Test noch besteht, wenn ich den URI ändere.

Hat jemand eine bessere Antwort?

+0

Es gibt keine bessere Option in der aktuell veröffentlichten Version (2.9.0). – Johan