Как разрешить PHPUnit тестировать инициализацию свойства в PHP7 .4? - PullRequest
0 голосов
/ 07 февраля 2020

Одним из изменений стиля кода в нашем приложении при принятии типизированных свойств PHP7 .4 было перемещение из:

if (null === $object->value) { ... }

в

if (empty($object->value)) { ... }

Даже при типизированном свойстве обнуляется, первый оператор if выдаст Error.

Следующим шагом было написание тестов. Если использование empty() при проверке инициализации типизированного свойства работает, реализация PHPUnit на assertEmpty завершается с той же ошибкой.

Очевидно, что assertFalse(isset($obj->value) будет работать, но какое утверждение должно привыкли проверять, не было ли создано свойство объекта? Упрощение теста мы бы хотели:

function testInstantiatedAfterCall()
{
    $obj = new Object('http://example.com');
    $obj->changeContainer('Example Container');

    $this->assertNull($obj->value);
    // or
    $this->assertEmpty($obj->value);
}
...