Как вы тестируете несколько значений для одного и того же атрибута?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)
)
)
);
Regexp утверждение не потому, что $ optionalValue не является строкой (по умолчанию он равен нулю)
Почему вы это проверяете этим странным способом? вы должны проверить поведение своего класса, а не внутреннее состояние. Задайте значение. Получите значение. Удостоверьтесь, что это то же самое. Это все, что вам нужно сделать. – Gordon
@hakre, что случилось с XOR в его тесте? – meze
Итак, вы бы тестировали сеттеры (что сложнее в моем случае) вместо установленного свойства? И btw я использовал XOR, потому что атрибут должен быть NULL XOR (строка И соответствие регулярному выражению) - я мог бы использовать OR, это было бы то же самое – kitensei