【问题标题】:Test structure XML in PHPUnitPHPUnit 中的测试结构 XML
【发布时间】:2013-05-16 03:58:25
【问题描述】:

我看到 assertEqualXMLStructure 能够在 PHPUnit 中使用测试结构 XML。但是我遇到了案例问题:当 2 个结构 XML 具有不同的子标签数量时,尽管结构相同,但它失败了。有没有办法通过 PHPUnit 的支持来做到这一点?谢谢

【问题讨论】:

    标签: xml unit-testing xsd phpunit structure


    【解决方案1】:

    通过编辑 assertEqualXMLStructure 以忽略检查标签子项的数量,我解决了我的问题:

    public static function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, $checkAttributes = FALSE, $message = '') {
      self::assertEquals($expectedElement->tagName, $actualElement->tagName, $message);
    
      if ($checkAttributes) {
        self::assertEquals($expectedElement->attributes->length, $actualElement->attributes->length, sprintf('%s%sNumber of attributes on node "%s" does not match', $message, !empty($message) ? "\n" : '', $expectedElement->tagName));
    
        for ($i = 0; $i < $expectedElement->attributes->length; $i++) {
          $expectedAttribute = $expectedElement->attributes->item($i);
          $actualAttribute = $actualElement->attributes->getNamedItem($expectedAttribute->name);
    
          if (!$actualAttribute) {
            self::fail(sprintf('%s%sCould not find attribute "%s" on node "%s"', $message, !empty($message) ? "\n" : '', $expectedAttribute->name, $expectedElement->tagName));
          }
        }
      }
    
      PHPUnit_Util_XML::removeCharacterDataNodes($expectedElement);
      PHPUnit_Util_XML::removeCharacterDataNodes($actualElement);
    
    
    
      for ($i = 0; $i < $expectedElement->childNodes->length; $i++) {
        self::assertEqualXMLStructure($expectedElement->childNodes->item($i), $actualElement->childNodes->item($i), $checkAttributes, $message);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-03-10
      • 2021-12-17
      • 1970-01-01
      • 2018-06-28
      • 2019-02-02
      • 2013-10-06
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      相关资源
      最近更新 更多