forknetwork / strict-phpunit
一个简单的PHPUnit扩展,禁止意外的方法调用。
v2.2.0
2024-05-02 20:25 UTC
README
一个简单的PHPUnit扩展,禁止意外的方法调用。
适用于PHPUnit 7.1及以上版本。
安装
composer require forknetwork/strict-phpunit ^2.0
如何使用
StrictTestTrait
可以被任何扩展自PHPUnit的 TestCase
的类使用。这个特质可以通过PHP Code Sniffer自动添加。
之前
use PHPUnit\Framework\TestCase; class YourTest extends TestCase { // ... }
之后
use ForkNetwork\StrictPHPUnit\StrictTestTrait; use PHPUnit\Framework\TestCase; class YourTest extends TestCase { use StrictTestTrait; // ... }
覆盖严格的模拟生成
默认情况下,所有模拟都将严格,但在某些情况下这可能不起作用。例如,PHPUnit没有很好地处理模拟的析构方法。在这些情况下,您可能希望再次启用值生成。
之前
private function createFooMock() { return $this->createMock('\Bar\Foo'); }
之后
private function createFooMock() { return $this->getMockBuilder('\Bar\Foo') ->enableAutoReturnValueGeneration(); ->getMock(); }
另一个选项是移除类中的特质,并手动添加 ->disableAutoReturnValueGeneration()
到您想要严格的模拟。
可选:PHP代码规范器和修复器
这个库附带了一个带有自动修复功能的代码规范器。只需将其参考包含在您的 phpcs.xml(.dist)
文件中,然后像往常一样运行代码规范器。
<rule ref="./vendor/forknetwork/strict-phpunit/src/Standards/ForkNetwork/ruleset.xml"/>
默认情况下,它将检查所有扩展自 TestCase
(PHPUnit) 的类。您可以通过添加以下内容到您的配置来更改它应该检查的扩展类。
<rule ref="ForkNetwork.PHPUnit.StrictUnitTest"> <properties> <property name="extendedClasses" type="array" value="TestCase,ExtendedTestCase,AnotherCustomTestCase"/> </properties> </rule>
请注意,此规范器仅确保添加了特质和使用语句,它不会排序或关注您代码风格的其余部分。
已知限制
当前规范器的实现不支持以下情况
- 逗号分隔的使用特质语句(例如
use StrictUnitTrait, FooTrait;
) - 完全限定名(FQCN)或部分使用特质语句(例如
use Traits\StrictUnitTest;
) - 在PHPUnit 8或更高版本中运行规范器单元测试不受支持。