Компонент PHPUnit Bridge улучшает исходную библиотеку PHPUnit с помощью утилит, сообщающих об использовании устаревшего кода и помощников для мока собственных функций, связанными со временем, DNS и существованием классов.
При тестировании некоторого кода, который должен быть совместим с несколькими версиями PHP, трудно выбрать версию PHPUnit: последние версии, такие как PHPUnit 8, используют функции, несовместимые с PHP 5.5, и удаляют методы, доступные в более ранних версиях PHPUnit. Кроме того, PHPUnit 6 переключился на классы пространства имен, поэтому тесты должны работать с пространствами имен и без них.
Вот почему в Symfony 4.4 улучшили PHPUnit Bridge с несколькими полифиллами, которые позволяют создавать тесты, совместимые с несколькими версиями PHPUnit.
Polyfills для недоступных методов
При использовании скрипта simple-phpunit
, предоставляемого PHPUnit Bridge, вместо скрипта phpunit, предоставляемого PHPUnit, Symfony внедряет полифилы для большинства новых методов классов TestCase
и Assert
.
Другими словами, вы можете начать использовать новые методы в наборах тестов, которые не совместимы с новыми версиями PHPUnit, такие как wellException()
, assertStringContainsString()
и т. д.
Удаление типа возврата Void
При запуске скрипта simple-phpunit с переменной окружения SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT
, установленной в 1, PHPUnit Bridge изменит код PHPUnit для удаления возвращаемого типа void
(введенного в PHPUnit 8) из setUp()
, tearDown()
, setUpBeforeClass()
и tearDownAfterClass()
методы. Это позволяет вам написать тесты, совместимы как с PHP 5, так и с PHPUnit 8.
Кроме того, вы можете использовать trait SetUpTearDownTrait в своем тестовом классе, чтобы внедрить методы без возвращаемого типа void
.
Пространства имен PHPUnit Classes
PHPUnit Bridge добавляет псевдонимы классов пространства имен для большинства классов PHPUnit, объявленных без пространств имен (например, PHPUnit_Framework_Assert
), позволяя вам всегда использовать объявление класса пространств имен, даже когда тест выполняется с PHPUnit 4, где пространства имен не используются.