2

当采用 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);
}
4

1 回答 1

0

似乎没有内置的断言。您必须自己编写,使用ReflectionProperty::isInitialized方法,就像在 PHP 7.4 中检查属性是否真的被初始化一样。

于 2021-10-27T16:35:48.993 回答