Как получить более читабельный diff для кодирования assertEequals string?

Предположим, я хочу подтвердить, что эти фрагменты XML совпадают:

public function assertXmlIsSame() {

$leExpectedXml = <<<XML
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XML;

$leActualXml = <<<XML
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder
</heading>
<body>Don't forget me this weekend!</body>
</note>
XML;$this->assertEquals(
$leExpectedXml,
$leActualXml,
'le xmls should be the same'
);
}

Я получаю вывод:

Fail  Failed asserting that two strings are equal. ( -Expected | +Actual )
- '<note>
-     <to>Tove</to>
-     <from>Jani</from>
-     <heading>Reminder</heading>
-     <body>Don't forget me this weekend!</body>
- </note>'
+ '<note>
+     <to>Tove</to>
+     <from>Jani</from>
+     <heading>Reminder
+     </heading>
+     <body>Don't forget me this weekend!</body>
+ </note>'

что бесполезно, так как весь XML выводится даже со строкой равенства.

Если я создам SebastianBergmann\Diff\Differ и сбросить этот diff:

$diff = (new Differ())->diff($leExpectedXml, $leActualXml);
codecept_debug($diff);

Вывод выглядит так:

  --- Original
+++ New
@@ @@
<note>
<to>Tove</to>
<from>Jani</from>
-    <heading>Reminder</heading>
+    <heading>Reminder
+    </heading>
<body>Don't forget me this weekend!</body>
</note>

Намного более читабельный и больше того, что я ожидал от кодирования.

Есть ли для кодирования только подсветка различий для измененных частей? Как особенно если xml-структуры становятся больше, почти невозможно увидеть разницу с выводом diff по умолчанию.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector