检查 class 是否具有用 PHPUnit 定义的常量的正确方法
Correct way to check if a class has a constant defined with PHPUnit
我正在尝试找出最佳或正确的方法来检查 class 是否具有用 PHPUnit 定义的常量。 PHPUnit 文档似乎没有涵盖这一点,这让我想知道我是否通过测试做了正确的事情 - 然而它是我的 class.
的一个重要特性
我有以下 class:
PurchaseManager.php
/**
* Message sent when a course has been purchased
*/
const COURSE_PURCHASED_MESSAGE = 'coursePurchasedMessage';
...它的一部分测试 class 有这个测试:
PurchaseManagerTest.php
public function testCoursePurchasedMessageConstant()
{
$pm = new PurchaseManager();
$this->assertTrue(defined(get_class($pm) . '::COURSE_PURCHASED_MESSAGE'));
}
这是正确的吗?它通过了,但我只是想知道这是否准确和最佳实践。
我正在使用 PHPUnit 5.0.8。
为此,我正在使用反射 class。它有 getConstants
方法,其中 returns 一个关联数组 [<constant_name> => <constant_value>, ...]
。
类似于:
public function testHasSiteExportedConstant()
{
$mailer = new \ReflectionClass(SiteExporter::class);
$this->assertArrayHasKey('SITE_EXPORTED', $mailer->getConstants());
}
我永远不会测试常量、属性或方法是否存在。当然,除非您正在测试代码生成器。
我正在尝试找出最佳或正确的方法来检查 class 是否具有用 PHPUnit 定义的常量。 PHPUnit 文档似乎没有涵盖这一点,这让我想知道我是否通过测试做了正确的事情 - 然而它是我的 class.
的一个重要特性我有以下 class:
PurchaseManager.php
/**
* Message sent when a course has been purchased
*/
const COURSE_PURCHASED_MESSAGE = 'coursePurchasedMessage';
...它的一部分测试 class 有这个测试:
PurchaseManagerTest.php
public function testCoursePurchasedMessageConstant()
{
$pm = new PurchaseManager();
$this->assertTrue(defined(get_class($pm) . '::COURSE_PURCHASED_MESSAGE'));
}
这是正确的吗?它通过了,但我只是想知道这是否准确和最佳实践。
我正在使用 PHPUnit 5.0.8。
为此,我正在使用反射 class。它有 getConstants
方法,其中 returns 一个关联数组 [<constant_name> => <constant_value>, ...]
。
类似于:
public function testHasSiteExportedConstant()
{
$mailer = new \ReflectionClass(SiteExporter::class);
$this->assertArrayHasKey('SITE_EXPORTED', $mailer->getConstants());
}
我永远不会测试常量、属性或方法是否存在。当然,除非您正在测试代码生成器。