crm*_*cco 3 php testing phpunit unit-testing class-constants
我试图找出最佳或正确的方法来检查一个类是否有一个使用PHPUnit定义的常量.PHPUnit文档似乎没有涵盖这一点,这让我想知道我是否通过测试来做正确的事情 - 但它是我班级的一个重要特征.
我有以下课程:
PurchaseManager.php
/**
* Message sent when a course has been purchased
*/
const COURSE_PURCHASED_MESSAGE = 'coursePurchasedMessage';
Run Code Online (Sandbox Code Playgroud)
...并且其部分测试类具有此测试:
PurchaseManagerTest.php
public function testCoursePurchasedMessageConstant()
{
$pm = new PurchaseManager();
$this->assertTrue(defined(get_class($pm) . '::COURSE_PURCHASED_MESSAGE'));
}
Run Code Online (Sandbox Code Playgroud)
它是否正确?它通过了,但我只是想知道这是否准确和最佳实践.
我正在使用PHPUnit 5.0.8.
我正在使用Reflection类来实现此目的.它有getConstants返回关联数组的方法[<constant_name> => <constant_value>, ...].
就像是:
public function testHasSiteExportedConstant()
{
$mailer = new \ReflectionClass(SiteExporter::class);
$this->assertArrayHasKey('SITE_EXPORTED', $mailer->getConstants());
}
Run Code Online (Sandbox Code Playgroud)
我永远不会测试常量,属性或方法的存在.当然,除非您正在测试代码生成器.