PHPUnit Тест для подтверждения, является ли функция / var общедоступной или защищенной? - PullRequest
3 голосов
/ 09 мая 2011

Есть ли способ утверждать, что метод или переменная являются общедоступными или защищены с помощью phpunit?

1 Ответ

6 голосов
/ 10 мая 2011

PHPUnit не предоставляет таких утверждений, и вы обычно не используете модульные тесты для проверки вашей способности печатать.Они должны проверить, что код работает во время выполнения.Вот еще несколько бессмысленных модульных тестов:

  • Утверждение, что класс называется CorrectClassName.
  • Утверждение, что function foo() { return 5; } возвращает 5.
  • УтверждениеКомментарии к функциям не содержат слова «выигрыш».

Теперь иногда вы просто хотите что-то сделать, даже если это не рекомендуется или имеет небольшую ценность.Я знаю, что.:) Добавьте это к классу базового теста:

/**
 * Assert that a method has public access.
 *
 * @param string $class name of the class
 * @param string $method name of the method
 * @throws ReflectionException if $class or $method don't exist
 * @throws PHPUnit_Framework_ExpectationFailedException if the method isn't public
 */
function assertPublicMethod($class, $method) {
    $reflector = new ReflectionMethod($class, $method);
    self::assertTrue($reflector->isPublic(), 'method is public');
}

Завершение assertProtectedMethod() и assertPrivateMethod() оставлено в качестве упражнения.Вы можете сделать то же самое для свойств, и вы могли бы даже сделать этот метод более универсальным для обработки метода или свойства - в зависимости от того, что найдено - и выдать какую-то другую ошибку, если ни один не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...