forknetwork/strict-phpunit

一个简单的PHPUnit扩展,禁止意外的方法调用。

v2.2.0 2024-05-02 20:25 UTC

This package is auto-updated.

Last update: 2024-09-02 21:09:20 UTC


README

Latest version Downloads Travis build status

一个简单的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或更高版本中运行规范器单元测试不受支持。