断言公共保护和私有属性的价值

PHPUnit 有两个断言来检查类属性的值:

assertAttributeSame($expected, $actualAttributeName, $actualClassOrObject, $message = '')
assertAttributeNotSame($expected, $actualAttributeName, $actualClassOrObject, $message = '')

无论可见性如何,这些方法都将检查对象属性的值。

让我们从一个要测试的类开始。它是一个简化的类,有三个属性,每个属性具有不同的可见性:

class Color {

    public $publicColor       = "red";
    protected $protectedColor = "green";
    private $privateColor     = "blue";
    
}

现在,要测试每个属性的值:

class ColorTest extends PHPUnit_Framework_TestCase
{
    public function test_assertAttributeSame() {

        $hasColor = new Color();

        $this->assertAttributeSame("red","publicColor",$hasColor);
        $this->assertAttributeSame("green","protectedColor",$hasColor);
        $this->assertAttributeSame("blue","privateColor",$hasColor);
        
        $this->assertAttributeNotSame("wrong","privateColor",$hasColor);
    }

}

正如你所看到的,断言适用于任何可见性,因此可以轻松查看受保护和私有方法。

此外,还有 assertAttributeEquals,assertAttributeContains,assertAttributeContainsOnly,assertAttributeEmpty ……等,匹配大多数涉及比较的断言。