我刚刚开始向我的应用程序介绍一些PHPUnit测试,并希望比较生成的两个XML文件。积极的测试不是问题,因为有一种专门的方法:
$this->assertEqualXMLStructure(
$expectedResultXml->firstChild,
$generatedResultXml->firstChild
);
现在,我一直在寻找一个负面测试,我故意创建一个无效的XML,因此它们不再匹配。我一直在谷歌搜索一段时间,但我似乎无法找到一个好的解决方案(类似于assertNotEqualXMLStructure();
的方法)。我是PHP的新手,所以这可能是一个noob问题;对不起,如果是这样的话。
如何根据结构测试两个XML文件不相等?
答案 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()
);