2017-06-06 5 views
0

Ich habe gerade begonnen, einige PHPUnit-Tests in meine Anwendung einzuführen und zwei XML-Dateien vergleichen möchten, die generiert werden. Der positive Test ist kein Problem, da es eine spezielle Methode, dies zu tun:PHPUnit - Assert zwei XMLs sind nicht gleich

$this->assertEqualXMLStructure(
    $expectedResultXml->firstChild, 
    $generatedResultXml->firstChild 
); 

Nun, ich habe mich einen negativen Test zu schreiben, wo ich eine ungültige XML, so dass sie nicht mehr Spiel absichtlich erstellen. Ich google seit einiger Zeit, aber ich kann nicht scheinen, eine gute Lösung zu finden (etwas wie eine Methode, die assertNotEqualXMLStructure(); genannt wird). Ich bin wirklich neu in PHP, so dass dies eine Frage sein könnte; Entschuldigung, wenn das hier der Fall ist.

Wie kann ich testen, dass zwei XML-Dateien aufgrund ihrer Struktur nicht gleich sind?

Antwort

0

Es gibt keine Methode zurückgegeben wird wie assertNotEqualXMLStructure() weil es nicht benötigt wird. Da Ihre zwei XML-Dokumente eine andere Struktur haben, kann ihre Textdarstellung nicht dieselbe sein.

können Sie DOMNode::C14N() verwenden, um die kanonische Darstellung der beiden Knoten als Text zu erzeugen und die Textdarstellungen nicht gleich sind (unter Verwendung von $this->assertNotEquals()) zu behaupten:

$this->assertNotEquals(
    $expectedResultXml->firstChild->C14N(), 
    $generatedResultXml->firstChild->C14N() 
); 
+0

Thx für den Eingang. – Severin

0

Haben Sie überlegt, ihre Werte in PHP zu vergleichen? Sie können XML in PHP konvertieren mit diesem:

$xml = simplexml_load_string($xml_string); $json = json_encode($xml); $array = json_decode($json,TRUE);

Dann können Sie die Struktur vergleichen, die in dem Array (die Attribute teilen sich wie auch im Ergebnis)

Verwandte Themen