holgerk/assert-golden

与 assertEquals 相同,但当参数为 null 时,测试文件会自动编辑,并用实际值替换 null

v2.0.7 2024-04-22 14:40 UTC

This package is auto-updated.

Last update: 2024-09-16 12:13:49 UTC


README

GitHub Release GitHub Actions Workflow Status Packagist Downloads

assertEquals 相同,但当 null 作为参数时,测试文件会自动编辑,并用实际值替换 null

给定以下代码

assertGolden(
    null,                 // <- expectation value
    ['color' => 'golden'] // <- actual value
);

...在第一次执行时,null 被替换为实际值

assertGolden(
    [
        'color' => 'golden',
    ],
    ['color' => 'golden']
);

本质上,它是为了节省重复编写、更新和复制期望值的工作。

安装

您可以通过 composer 安装此包

composer require holgerk/assert-golden --dev

使用方法

只需将 null 传递给 assertGolden 期望,并在第一次测试运行时自动替换 null

特质使用

use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\Attributes\Test;

use Holgerk\AssertGolden\AssertGolden;

class ExampleTest extends TestCase
{
    use AssertGolden;

    #[Test]
    public function test(): void
    {
        // via method call...
        $this->assertGolden(
            null,
            ['a' => 1, 'b' => 2]
        );
        
        // ...or static call
        self::assertGolden(
            null,
            ['a' => 1, 'b' => 2]
        );
    }
}

函数使用

use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\Attributes\Test;

use function Holgerk\AssertGolden\assertGolden;

class ExampleTest extends TestCase
{
    #[Test]
    public function test(): void
    {
        assertGolden(
            null,
            ['a' => 1, 'b' => 2]
        );
    }
}

之后,您可以手动编辑期望,或再次插入 null 以自动替换。

重新生成所有期望

如果您想一次性重新生成所有期望,您可以在 phpunit 调用中添加参数:--update-golden

# regenerate all expectations at once from their actual values
./vendor/bin/phpunit --update-golden

限制

一行中不能有多个 assertGolden 调用。因为自动替换基于 debug_backtrace 函数,该函数提供了 assertGolden 调用者的行号和文件,以及 composer 包 nikic/php-parser,它用于获取期望参数的确切起始和结束位置。因此,如果有多个 assertGolden 调用,则无法检测到不同的位置。

另请参阅

鸣谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件