robier / tests-ignore-final
模拟最终类
dev-master
2022-06-21 19:31 UTC
Requires
- php: >=7.3
Requires (Dev)
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-22 00:30:50 UTC
README
这个库允许您模拟签名中包含 final
关键字的类。这是通过挂钩自动加载过程并在运行时更改类的源代码来实现的。
这个库受到了 dg/bypass-finals 库的启发。我想有相同的功能,但采用不同的方法。我希望这种不同的方法不会像 dg/bypass-finals 那样存在感染问题。
用法
假设您有一个想要模拟的类
<?php # ./FooBar.php final class FooBar { }
在您的测试中,您只需要做这件事
<?php use PHPUnit\Framework\TestCase; use Robier\Tests\IgnoreFinal; class FooBarTest extends TestCase { public function testSomething(): void { IgnoreFinal::composer(FooBar::class); } }
类 IgnoreFinal
将找到我们想要模拟的类的源代码,并将从源代码中移除所有 final
关键字,然后加载修改后的源代码而不是真实的源代码。
测试
首先运行 docker/build
构建容器,然后运行 docker/run composer run test
执行所有测试。
贡献
欢迎贡献!