斷言公共保護和私有屬性的價值

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 ……等,匹配大多數涉及比較的斷言。