如何爲同一個屬性測試多個值?PHPUnit,測試多個值
class Test {
private $_optionalValue = null;
function setValue(String $optionalValue)
{
$this->_optionalValue = $optionalValue;
}
}
所以在這裏, 「$ _optionalValue」 可能爲NULL或用戶定義的值,但是當我在PHPUnit檢查這樣的:
$optionalValue = PHPUnit_Util_Class::getObjectAttribute($my_object, '_optionalValue');
$this->assertThat(
$optionalValue,
$this->logicalXor(
$this->assertNull($optionalValue),
$this->logicalAnd(
$this->assertAttributeInternalType('string', '_optionalValue', $optionalValue),
$this->assertRegExp('/[0-9]{2}:[0-9]{2}:[0-9]{2}/', (string) $optionalValue)
)
)
);
正則表達式斷言失敗,因爲$ optionalValue不是一個String (默認爲空)
你爲什麼要用這種奇怪的方式測試它?你應該測試你的班級的行爲而不是內部狀態。設置值。獲得價值。確保它是一樣的。這就是你需要做的。 – Gordon 2012-03-02 10:05:10
@hakre XOR在他的測試中出了什麼問題? – meze 2012-03-02 10:05:44
所以你會測試setter(這在我的情況下更復雜),而不是設置的屬性?並順便說一句,我用異或因爲屬性應該爲空XOR(字符串和匹配的正則表達式) - 我可以使用OR它本來是一樣的 – kitensei 2012-03-02 10:07:25