Правильный способ проверить, есть ли в классе константа, определенная с помощью PHPUnit

Я пытаюсь найти лучший или правильный способ проверить, есть ли в классе константа, определенная с помощью PHPUnit. Документы PHPUnit, кажется, не покрывают это, что заставляет меня задаться вопросом, правильно ли я поступаю, проверяя это — однако это важная особенность моего класса.

У меня есть следующий класс:

PurchaseManager.php

/**
* Message sent when a course has been purchased
*/
const COURSE_PURCHASED_MESSAGE = 'coursePurchasedMessage';

…и часть его тестового класса имеет этот тест:

PurchaseManagerTest.php

public function testCoursePurchasedMessageConstant()
{
$pm = new PurchaseManager();
$this->assertTrue(defined(get_class($pm) . '::COURSE_PURCHASED_MESSAGE'));
}

Это правильно? Это проходит, но мне просто интересно знать, является ли это точной и лучшей практикой.

Я использую PHPUnit 5.0.8.

2

Решение

Я использую класс Reflection для этой цели. Она имеет getConstants метод, который возвращает ассоциативный массив [<constant_name> => <constant_value>, ...],

Что-то вроде:

public function testHasSiteExportedConstant()
{
$mailer = new \ReflectionClass(SiteExporter::class);
$this->assertArrayHasKey('SITE_EXPORTED', $mailer->getConstants());
}
5

Другие решения

Я бы никогда не проверил существование константы, атрибута или метода. Если, конечно, вы не тестируете генератор кода.

6

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector