PHPUnit - 断言两个XML不相等

时间:2017-06-06 08:03:32

标签: php xml phpunit

我刚刚开始向我的应用程序介绍一些PHPUnit测试,并希望比较生成的两个XML文件。积极的测试不是问题,因为有一种专门的方法:

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

现在,我一直在寻找一个负面测试,我故意创建一个无效的XML,因此它们不再匹配。我一直在谷歌搜索一段时间,但我似乎无法找到一个好的解决方案(类似于assertNotEqualXMLStructure();的方法)。我是PHP的新手,所以这可能是一个noob问题;对不起,如果是这样的话。

如何根据结构测试两个XML文件不相等?

2 个答案:

答案 0 :(得分:0)

您是否考虑过在PHP中比较它们的值?您可以使用以下方法将XML转换为PHP:

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

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

答案 1 :(得分:0)

没有类似assertNotEqualXMLStructure()的方法,因为它不需要。由于您的两个XML文档具有不同的结构,因此它们的文本表示形式不能相同。

您可以使用DOMNode::C14N()将两个节点的规范表示形式生成为文本,并断言文本表示不相等(使用$this->assertNotEquals()):

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