backendtea / assert-object-same-state
PHPUnit 断言助手,允许断言对象是否相同
1.0.0
2019-12-08 18:21 UTC
Requires
- php: ^7.2
Requires (Dev)
- doctrine/coding-standard: ^6.0
- infection/infection: ^0.15.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^0.12.1
- phpstan/phpstan-phpunit: ^0.12.1
- phpstan/phpstan-strict-rules: ^0.12.0
- phpunit/phpunit: ^8.4
- vimeo/psalm: ^3.7
This package is auto-updated.
Last update: 2024-09-09 18:28:43 UTC
README
PHPUnit 断言助手,用于检查两个对象是否具有相同的状态。
请注意,相同状态仅指属性的状态。如果您在函数内部使用 static
关键字,并且它们有自己的状态,那么您需要自行处理。
安装
使用 composer
$ composer require backendtea/assert-object-same-state --dev
用法
此包与 phpunit 8 兼容。
<?php use BackEndTea\SameObject\ObjectHasSameStateAssertion; use PHPUnit\Framework\TestCase; class MyTest extends TestCase { use ObjectHasSameStateAssertion; public function testObjects(): void { $one = new class{public $a=3;}; $two = new class{public $a=3;}; $this->assertObjectHasSameSate($one, $two); } }
PHPUnit 之外
<?php $comp = new \BackEndTea\SameObject\ObjectComparator(); $comp->haveSameState($objectOne, $objectTwo);
原因
assertSame()
或 ===
检查两个变量是否引用了相同的对象,这并不总是您需要的。但 assertEquals
或 ==
的比较过于宽松,因为它与其他宽松比较存在相同的问题。
例如
<?php class Thing { public $prop; public function __construct($prop) { $this->prop = $prop; } } new Thing(10) == new Thing('10'); // true new Thing(10) === new Thing('10'); // false new Thing(10) === new Thing(10); // false
限制
相同状态仅指属性的状态。如果您在方法内部使用 static
关键字,并且它们有自己的状态,那么您需要自行处理。