Middle Качество кода Рекомендуется

Тестирование

Тестирование логики в Битриксе опирается на вынос бизнес-правил в сервисный слой, что позволяет покрывать методы изолированными быстрыми unit-тестами в PHPUnit без загрузки ядра. Интеграционные тесты для ORM и корзины запускаются с бутстрапом через prolog_before.php и виртуальными сессиями (BX_SECURITY_SESSION_VIRTUAL) на выделенной тестовой базе данных.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    PHPUnit
  • 2
    Тестирование API
  • 3
    Функциональные тесты

Материалы

Официальная документация

Проверь себя

Скидку переписали, через неделю оптовики получили розничную цену. Почему тест на это не написали?

Потому что тестировать было нечего: расчёт лежал в result_modifier.php, а не в сервисе. Тест возможен только у логики, вынесенной в класс модуля с входом и выходом без HTML.

Чем тест сервиса с подменённым репозиторием отличается от теста с загруженным ядром?

Первый не поднимает ядро и базу, работает за миллисекунды и не трогает данные. Второй нужен там, где проверяется само ядро: ORM, события, корзина. Ядро в bootstrap грузится через prolog_before.php с заданным DOCUMENT_ROOT.

Тест контроллера через HTTP стабильно падает на invalid_csrf. Что делать?

Действие с фильтром Csrf ждёт заголовок X-Bitrix-Csrf-Token с текущим sessid или отключённый фильтр для тестового окружения. Если действие не меняет состояние, проверьте, что фильтр там вообще нужен.

Заказчик просит «покрыть тестами оформление заказа». С чего начать, чтобы не увязнуть?

С правила, которое ломалось в последний раз, в виде теста сервиса. Прогон всего sale.order.ajax через браузер — самый дорогой и хрупкий тест, его пишут последним и в одном экземпляре.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти