Недавно я обнаружил следующую проблему:
self::assertNull($someArray[$someIndex]);
Если $ someIndex не существует индекс $ SomeArray, $ SomeArray [$ someIndex] будет оценивать ноль а также assertNull (нуль) скажет, что все в порядке. Так что в основном PHPUnit скрывает проблему.
Есть ли что-то вроде
self::assertExistsNotNull($someArray[$someIndex]);
что верно только если $ SomeArray [$ someIndex] существует и не ноль?
Ты можешь использовать assertArrayHasKey()
в дополнение к assertNull()
как объяснено в документация
Кажется, ваша проблема не в том, что PHPUnit «скрывает» проблемы, а в том, что вы скрываете проблемы с настройками отчетов об ошибках PHP.
PHP выдаст уведомление для неопределенного индекса. Я настоятельно рекомендую вам как разработать, так и протестировать с параметром error_reporting, установленным в E_ALL, и включенным display_errors. Поэтому во время тестирования вы увидите проблему, если она не определена, и, следовательно, вам не нужно добавлять новое утверждение.
Вы можете написать собственное утверждение: 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())));