2017-06-06 36 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);

然后你就可以比较在数组中返回(属性被拆分,以及在结果中)的结构