backendtea/assert-object-same-state

PHPUnit 断言助手,允许断言对象是否相同

1.0.0 2019-12-08 18:21 UTC

This package is auto-updated.

Last update: 2024-09-09 18:28:43 UTC


README

travis status

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 关键字,并且它们有自己的状态,那么您需要自行处理。