2013-05-16 4 views
0

Я вижу assertEqualXMLStructure, способную использовать структуру XML теста в PHPUnit. Но у меня проблема с случаем: когда 2 структуры XML имеют разное количество тегов для детей, это не удалось, хотя структуры одинаковы. Есть ли способ сделать это с поддержкой PHPUnit? БлагодаряСтруктура теста XML в PHPUnit

ответ

0

отредактировав 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); 
    } 
} 
Смежные вопросы