holgerk / assert-golden
与 assertEquals 相同,但当参数为 null 时,测试文件会自动编辑,并用实际值替换 null
v2.0.7
2024-04-22 14:40 UTC
Requires
- php: ^8.1
- composer-runtime-api: *
- nikic/php-parser: ^4.16||^5
- phpunit/phpunit: ^8||^9||^10||^11
- symfony/var-exporter: ^4||^5||^6||^7
Requires (Dev)
- symfony/var-dumper: ^6||^7
README
与 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 调用,则无法检测到不同的位置。
另请参阅
- phpunit-snapshot-assertions
此插件也便于从实际值自动生成期望值,但会将生成的期望值存储在单独的文件中。 - pest-plugin-equal-golden
对于 pestphp 也是如此
鸣谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件