Ich habe einen Test ausgeführt, um zu überprüfen, ob der XML-Code, der einen Endpunkt erreicht, mit dem in einer Datei enthaltenen XML identisch ist. Ich verwende assertMockEndpointsSatisfied()
und habe überprüft, dass das XML mit einem anderen Tool identisch ist.Kameltest - assertMockEndpointsSatisfied mit Dateiinhalt
String sourceXml = readFile("src/test/resources/source1.xml");
String targetXml = readFile("src/test/resources/target1.xml");
// Mock WS endpoint should receive one message
mockResult.expectedMessageCount(1);
// Target endpoint should receive the target XML
mockResult.expectedBodiesReceived(targetXml);
// Start the process by sending in the Source XML
start.sendBody(sourceXml);
// Run all assertions
assertMockEndpointsSatisfied();
und das Versagen (modifizierte Elemente und Namespaces) liest:
java.lang.AssertionError: mock://jmsamq:queue:SettlementOut Body of message: 0. Expected: <<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<api:req xmlns="testNS" xmlns:api="testAPI">
<api:test>
<a>0600017121</a>
<b>01</b>
<c>1000.50</c>
<d>2000</d>
</api:test>
</api:req>
> but was: <<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<api:req xmlns="testNS" xmlns:api="testAPI">
<api:test>
<a>0600017121</a>
<b>01</b>
<c>1000.50</c>
<d>2000</d>
</api:test>
</api:req>
>
Ich habe XMLUnit angesehen, aber lieber nicht, dies zu tun haben. Wenn ich anstelle einer Datei anstelle einer Datei mit '\ n' anstelle einer neuen Zeile und 4 Leerzeichen eine Zeichenfolge vergleiche, funktioniert das problemlos.
Wenn ich die Marshal-Eigenschaft filterNonXmlChars = "true" verwende, muss mein Test bestanden werden. Dort muss ein Zeichen versteckt sein, aber ich kann nicht herausfinden, was es ist. – kinsey
Ich benutze nur XMLUnit für jetzt Es funktioniert gut, aber ich würde lieber einen Weg finden, die assertMockEndpointsSatisfied() - Prüfung zu verwenden. " – kinsey