bitrix-code
Разработка

Юнит-тесты для модулей Битрикс24: PHPUnit и лучшие практики

Дмитрий Горохов, разработчик12 мин

Без тестов любое обновление Битрикс24 — лотерея. Код, который работал вчера, может сломаться завтра. Разбираем, как писать тесты для кастомных модулей.

Почему тесты сложно

Битрикс24 — не самый дружелюбный к тестированию. Глобальное состояние ($GLOBALS['USER'], $DB), сложные зависимости, много статичных методов.

Выбор инструмента

PHPUnit 9+. Для D7 ORM в рантайме — отдельная тестовая БД. Мокирование через Prophecy или встроенные моки PHPUnit.

Стратегия тестирования

  1. Юнит-тесты на чистые классы бизнес-логики (70% кода)
  2. Интеграционные на D7 ORM с тестовой БД (20%)
  3. End-to-end на ключевые сценарии (10%)

Моки для D7

Для быстрых юнит-тестов — DataMapper pattern. Ваш код не работает с ORM напрямую, а через репозитории. В тестах репозитории мокируются.

CI/CD

GitLab CI / GitHub Actions прогоняют тесты на каждый коммит. Merge в main только при зелёных тестах.