Ошибка «Constant CONSTANT_NAME Already Defined» в PHPUnit

Если вы используете PHPUnit для запуска множества тестов, каждый из которых определяет константы, то вы можете столкнуться с ошибкой «Constant CONSTANT_NAME Already Defined» при попытке запустить их вместе.

Это происходит потому, что PHPUnit по умолчанию запускает все тесты в одном и том же процессе PHP, поэтому после запуска первого теста (и определения в нем константы) PHP будет жаловаться, что вы уже определили константу.

Для решения этой проблемы вам нужно указать PHPUnit не сохранять глобальное состояние между тестами и запускать каждый тест в отдельном процессе. Делается это очень просто:

use PHPUnitFrameworkTestCase;

class RecurringReportTest extends TestCase {

    protected $preserveGlobalState          = false;
    protected $runTestInSeparateProcess = true;

    protected function setUp() { }
    protected function tearDown() { }

    // Тут ваши тесты.
}

Это добавит немного накладных расходов, но, скорее всего, может оказаться единственным способом определить константы в ваших тестах.

Источник: Error Message: ‘Constant Already Defined’ When using PHPUnit

Источник: https://www.kobzarev.com/programming/constant-already-defined-phpunit/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: