php - PHP7.4中如何让PHPUnit测试属性初始化?
问题描述
当采用 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);
}
解决方案
似乎没有内置的断言。您必须自己编写,使用ReflectionProperty::isInitialized方法,就像在 PHP 7.4 中检查属性是否真的被初始化一样。
推荐阅读
- css - 如何根据 foreach 循环中的键更改更改表“td”颜色
- connection-string - 在每个项目的 Octopus Deploy 中配置连接字符串
- javascript - querySelector (GetElementByID) - 多个 ID
- laravel - 急切加载多级类别
- java - 找不到 TLS ALPN 提供程序;没有可用的 netty-tcnative、Conscrypt 或 Jetty NPN/ALPN
- docker - curl 命令在 dockerfile 内部不起作用,但在同一网络外部起作用
- python - Python "0" 到 int
- tensorflow - 我应该如何将经过训练的模型从 google colab 部署到我的计算机
- mysql - 如何选择一个单词的字母不同的多行?
- javascript - 在 Angular 项目中包含 antlr4 的问题