【问题标题】:PHPUnit - Assert two XMLs are not equalPHPUnit - 断言两个 XML 不相等
【发布时间】:2017-11-07 03:29:23
【问题描述】:

我刚刚开始在我的应用程序中引入一些 PHPUnit 测试,并且想要比较生成的两个 XML 文件。阳性测试不是问题,因为有专门的方法可以做到这一点:

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

现在,我一直在寻找写一个否定测试,我故意创建一个无效的 XML,以便它们不再匹配。我已经在谷歌上搜索了一段时间,但我似乎找不到一个好的解决方案(类似于一种名为 assertNotEqualXMLStructure(); 的方法)。我对 PHP 真的很陌生,所以这可能是一个菜鸟问题;对不起,如果是这种情况。

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

【问题讨论】:

    标签: php xml phpunit


    【解决方案1】:

    没有像assertNotEqualXMLStructure() 这样的方法,因为它不是必需的。由于您的两个 XML 文档具有不同的结构,因此它们的文本表示不能相同。

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

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

    【讨论】:

    • 感谢输入。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 2011-04-19
      • 2013-09-16
      • 2018-08-31
      • 2010-09-29
      相关资源
      最近更新 更多