我最近检测到以下问题:
self::assertNull($someArray[$someIndex]);
如果 $ someIndex 不是 $ someArray 的现有索引,则 $ someArray [$ someIndex] 将评估为 null < / em>和 assertNull(null)会说一切正常。因此,基本上,PHPUnit隐藏了一个问题。
有没有类似的东西
self::assertExistsNotNull($someArray[$someIndex]);
仅当 $ someArray [$ someIndex] 存在且不是 null 时,这是正确的吗?
答案 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())));