Пожалуйста, будьте внимательны: это пока нестабильная альфа-версия!
Для разработки Unit-тестов библиотек, зависимых от Битрикс, требуется сам Битрикс. Однако его установка является долгим
процессом, который контролируется через визуальный интерфейс в браузере и очень сложно поддаётся автоматизации. Данная
библиотека предоставляет возможность автоматического создания имитаций(mocking) классов Битрикс без установки
последнего. Одновременно решается проблема Multiple definitions exist for class '%bitrixClassName%'
в IDE при
разработке.
- Автоматическое создание mock-классов Битрикс для использование в Unit-тестах
composer require --dev webarchitect609/bitrix-taxidermist
При написании Unit-теста в переопределении метода \PHPUnit\Framework\TestCase::setUp()
или
\PHPUnit\Framework\TestCase::setUpBeforeClass()
следует запустить изготовление имитаций всех классов:
use WebArch\BitrixTaxidermist\Taxidermist;
(new Taxidermist)->taxidermizeAll();
Будут автоматически созданы алиасы. Например,
/** @noinspection ALL */
class_alias('\WebArch\BitrixTaxidermist\Mock\Bitrix\Main\Data\Cache', '\Bitrix\Main\Data\Cache');
, и таким образом Unit-тест может пользоваться этими классами точно также, как если бы в его распоряжении был установленный Битрикс.
Следует указать файл ~/resources/autoload-dist.php
в качестве дополнительного файла автозагрузчика.
Если необходимо работать с \Bitrix\Main\Application::getInstance()
, он будет вызывать ошибку:
Error: Cannot instantiate abstract class WebArch\BitrixTaxidermist\Mock\Bitrix\Main\Application
Чтобы этого избежать, следует создать требуемый объект приложения. Например, так:
use WebArch\BitrixTaxidermist\Mock\Bitrix\Main\HttpApplication;
HttpApplication::getInstance();