HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Представьте себе функцию, которая принимает на вход HTML в виде строки, извлекает из него все ссылки и возвращает как массив:</p>
1 <p>Представьте себе функцию, которая принимает на вход HTML в виде строки, извлекает из него все ссылки и возвращает как массив:</p>
2 <p>Кусок HTML в начале теста выглядит страшно. Он большой и состоит из нагромождения тегов. Конечно, можно постараться и отформатировать его, но это будет ручная работа. Для любого редактора это просто строка в PHP. Но дело не только в форматировании, у такого способа работы с большими кусками данных есть и другие недостатки:</p>
2 <p>Кусок HTML в начале теста выглядит страшно. Он большой и состоит из нагромождения тегов. Конечно, можно постараться и отформатировать его, но это будет ручная работа. Для любого редактора это просто строка в PHP. Но дело не только в форматировании, у такого способа работы с большими кусками данных есть и другие недостатки:</p>
3 <ul><li>При обновлениях очень легко допустить ошибку, которую сложно обнаружить визуально. Редактор ничем не сможет помочь.</li>
3 <ul><li>При обновлениях очень легко допустить ошибку, которую сложно обнаружить визуально. Редактор ничем не сможет помочь.</li>
4 <li>Чем больше таких данных в тестах, тем сложнее их читать и отделять логику от самих данных.</li>
4 <li>Чем больше таких данных в тестах, тем сложнее их читать и отделять логику от самих данных.</li>
5 </ul><p>Было бы гораздо удобнее, если бы HTML хранился как обычный HTML в своём собственном файле. Это несложно сделать. В таком случае тест будет выглядеть так:</p>
5 </ul><p>Было бы гораздо удобнее, если бы HTML хранился как обычный HTML в своём собственном файле. Это несложно сделать. В таком случае тест будет выглядеть так:</p>
6 <p>Данные, которые нужны во время запуска тестов, называются фикстурами. Это не обязательно текстовые данные. Фикстурами могут быть картинки, JSON и XML-файлы, записи в базе данных и многое другое. Иногда частью фикстур может быть и код, но это довольно редкая ситуация.<a>Подобные фикстуры</a>нужны при тестировании различных анализаторов кода, таких как Psalm или PHPStan.</p>
6 <p>Данные, которые нужны во время запуска тестов, называются фикстурами. Это не обязательно текстовые данные. Фикстурами могут быть картинки, JSON и XML-файлы, записи в базе данных и многое другое. Иногда частью фикстур может быть и код, но это довольно редкая ситуация.<a>Подобные фикстуры</a>нужны при тестировании различных анализаторов кода, таких как Psalm или PHPStan.</p>
7 <p>Обычно фикстуры хранятся в отдельных файлах в своей директории. Например, можно создать директорию<em>fixtures</em>внутри<em>tests</em>. Затем они читаются и по необходимости используются в тестах.</p>
7 <p>Обычно фикстуры хранятся в отдельных файлах в своей директории. Например, можно создать директорию<em>fixtures</em>внутри<em>tests</em>. Затем они читаются и по необходимости используются в тестах.</p>
8 <p>Воображаемый пример:</p>
8 <p>Воображаемый пример:</p>
9 <p>Когда фикстур больше одной, то в коде тестов начинает появляться много похожих вызовов, считывающих файлы:</p>
9 <p>Когда фикстур больше одной, то в коде тестов начинает появляться много похожих вызовов, считывающих файлы:</p>
10 <p>В таком случае лучше вынести построение пути в отдельный метод, а заодно воспользоваться правильным способом склеивания путей:</p>
10 <p>В таком случае лучше вынести построение пути в отдельный метод, а заодно воспользоваться правильным способом склеивания путей:</p>
11 <p>В том случае, когда фикстуры используются для прямого сравнения, можно упростить процесс и не читать их из файлов. PHPUnit поставляется с большим набором утверждений для файлов, которые их читают сами:</p>
11 <p>В том случае, когда фикстуры используются для прямого сравнения, можно упростить процесс и не читать их из файлов. PHPUnit поставляется с большим набором утверждений для файлов, которые их читают сами:</p>
12  
12