webarchitect609 / bitrix-taxidermist
用于单元测试的Bitrix类模拟。
0.2.0
2023-02-24 12:26 UTC
Requires
- php: ^7.2 || ^8.0
- symfony/finder: ^3.0 || ^4.0 || ^5.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^8.5
- roave/security-advisories: dev-master
README
请注意:这目前还是一个不稳定的alpha版本!
为了开发依赖Bitrix的库的单元测试,需要安装Bitrix。然而,安装过程是耗时的,需要通过浏览器中的可视化界面控制,并且很难自动化。这个库提供了不安装Bitrix即可自动创建Bitrix类模拟的功能。同时解决了在IDE开发时出现的“存在对类'%bitrixClassName%'的多个定义”的问题。
功能
- 自动创建用于单元测试的Bitrix模拟类
安装
composer require --dev webarchitect609/bitrix-taxidermist
使用
单元测试
在编写单元测试时,在重写方法 \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');
,这样单元测试就可以像使用已安装的Bitrix一样使用这些类。
代码静态分析
应将文件 ~/resources/autoload-dist.php
指定为额外的自动加载文件。
已知问题
调用 \Bitrix\Main\Application::getInstance()
时出错
如果需要使用 \Bitrix\Main\Application::getInstance()
,它将引发错误
Error: Cannot instantiate abstract class WebArch\BitrixTaxidermist\Mock\Bitrix\Main\Application
为了避免这种情况,应创建所需的应用程序对象。例如,这样
use WebArch\BitrixTaxidermist\Mock\Bitrix\Main\HttpApplication; HttpApplication::getInstance();