2017-06-06 64 views
0

我剛剛開始向我的應用程序介紹一些PHPUnit測試,並想比較兩個生成的XML文件。正面測試不是一個問題,因爲有專門的方法,這樣做:PHPUnit - 斷言兩個XML不相等

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

現在,我一直在尋找寫一個消極測試,我特意創建一個無效的XML,使他們不再匹配。我一直在Google上搜索一段時間,但似乎無法找到一個好的解決方案(類似於名爲assertNotEqualXMLStructure();的方法)。我對PHP真的很陌生,所以這可能是一個noob問題;對不起,如果是這樣的話。

如何根據測試結果測試兩個XML文件是否相同?

回答

0

沒有方法:你可以使用這個XML轉換爲PHP像assertNotEqualXMLStructure(),因爲它不是必需的。由於您的兩個XML文檔具有不同的結構,因此它們的文本表示形式不能相同。

您可以使用DOMNode::C14N()生產作爲文本的兩個節點的規範表示,並斷言文本表示不相等(使用$this->assertNotEquals()):

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

THX的輸入。 – Severin

0

你有沒有考慮在PHP中比較它們的值?

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

然後你就可以比較在數組中返回(屬性被拆分,以及在結果中)的結構