承接 eliashaeussler/deep-closure-comparator 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

eliashaeussler/deep-closure-comparator

最新稳定版本:1.2.1

Composer 安装命令:

composer require eliashaeussler/deep-closure-comparator

包简介

Provides a PHPUnit comparator to assert equality of closures

README 文档

README

Deep Closure Comparator

Coverage CGL Tests Supported PHP Versions

A Composer library that provides a PHPUnit comparator to assert equality of closures. It can be used to perform deep evaluation of closures, e.g. as part of objects. Closures are compared using their serialized value, which is calculated by the opis/closure library.

???? Installation

Packagist Packagist Downloads

composer require --dev eliashaeussler/deep-closure-comparator

⚡ Usage

Instead of using the self::assertEquals() method of a PHPUnit test case, use the assertEquals method that is shipped within the DeepClosureAssert class:

use EliasHaeussler\DeepClosureComparator\DeepClosureAssert;
use PHPUnit\Framework\TestCase;

final class Foo
{
    public function __construct(
        public ?\Closure $bar = null,
    ) {}
}

final class FooTest extends TestCase
{
    public function testSomething(): void
    {
        $expected = new Foo();
        $expected->bar = static fn() => 'foo';

        $actual = new Foo();
        $actual->bar = static fn() => 'foo';

        DeepClosureAssert::assertEquals($expected, $actual);
    }
}

Or, in other words:

-self::assertEquals($expected, $actual);
+DeepClosureAssert::assertEquals($expected, $actual);

Note

Closures are compared using their serialized representation. This is done by the opis/closure library, which provides mechanisms to deep inspect and serialize given closures. More information can be found in the official documentation of this library.

????‍???? Contributing

Please have a look at CONTRIBUTING.md.

???? Credits

This project developed from a hardened implementation detail in the sebastian/comparator library, as part of PHPUnit's supply chain. With the introduction of a new ClosureComparator, comparing closures got a lot more difficult. Finally, @tstarling suggested parts of the actual implementation of this deep-closure-comparator library. Thank you very much for your support!

⭐ License

This project is licensed under GNU General Public License 3.0 (or later).

统计信息

  • 总下载量: 26.86k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0-or-later
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固