Разработка
Юнит-тесты для модулей Битрикс24: PHPUnit и лучшие практики
Дмитрий Горохов, разработчик12 мин
Без тестов любое обновление Битрикс24 — лотерея. Код, который работал вчера, может сломаться завтра. Разбираем, как писать тесты для кастомных модулей.
Почему тесты сложно
Битрикс24 — не самый дружелюбный к тестированию. Глобальное состояние ($GLOBALS['USER'], $DB), сложные зависимости, много статичных методов.
Выбор инструмента
PHPUnit 9+. Для D7 ORM в рантайме — отдельная тестовая БД. Мокирование через Prophecy или встроенные моки PHPUnit.
Стратегия тестирования
- Юнит-тесты на чистые классы бизнес-логики (70% кода)
- Интеграционные на D7 ORM с тестовой БД (20%)
- End-to-end на ключевые сценарии (10%)
Моки для D7
Для быстрых юнит-тестов — DataMapper pattern. Ваш код не работает с ORM напрямую, а через репозитории. В тестах репозитории мокируются.
CI/CD
GitLab CI / GitHub Actions прогоняют тесты на каждый коммит. Merge в main только при зелёных тестах.