PHPUnit:是否有类似“ assertExistsNotNull”的内容?

时间:2018-08-08 10:22:04

标签: php testing phpunit assert

我最近检测到以下问题:

self::assertNull($someArray[$someIndex]);

如果 $ someIndex 不是 $ someArray 的现有索引,则 $ someArray [$ someIndex] 将评估为 null < / em>和 assertNull(null)会说一切正常。因此,基本上,PHPUnit隐藏了一个问题。

有没有类似的东西

self::assertExistsNotNull($someArray[$someIndex]);

仅当 $ someArray [$ someIndex] 存在且不是 null 时,这是正确的吗?

3 个答案:

答案 0 :(得分:2)

the documentation所述,除了assertArrayHasKey()以外,您还可以使用assertNull()

答案 1 :(得分:0)

似乎您的问题不是PHPUnit在“隐藏”问题,而是在隐藏您的PHP错误报告设置问题。

PHP将为未定义的索引引发通知。我强烈建议您在将error_reporting设置为E_ALL并启用display_errors的情况下进行开发和测试。因此,在测试过程中,如果未定义,就会看到问题,因此不需要添加新的断言。

答案 2 :(得分:0)

您可以编写自己的断言:https://phpunit.de/manual/6.5/en/extending-phpunit.html#extending-phpunit.custom-assertions

或者写这样的东西:

self::assertThat($someArray, self::logicalAnd(self::arrayHasKey($someIndex), self::logicalNot(self::isNull())));