我试图找出最佳或正确的方法来检查一个类是否有一个用PHPUnit定义的常量。 PHPUnit文档似乎没有涵盖这一点,这让我想知道我是否通过测试来做正确的事情 - 但它是我班级的一个重要特征。
我有以下课程:
<activity>
PurchaseManager.php
...部分测试类有这个测试:
/**
* Message sent when a course has been purchased
*/
const COURSE_PURCHASED_MESSAGE = 'coursePurchasedMessage';
PurchaseManagerTest.php
这是对的吗?它通过了,但我只是想知道这是否准确和最佳实践。
我正在使用PHPUnit 5.0.8。
答案 0 :(得分:6)
我为此目的使用Reflection类。它有getConstants
方法,它返回一个关联数组[<constant_name> => <constant_value>, ...]
。
类似的东西:
public function testHasSiteExportedConstant()
{
$mailer = new \ReflectionClass(SiteExporter::class);
$this->assertArrayHasKey('SITE_EXPORTED', $mailer->getConstants());
}
答案 1 :(得分:5)
我永远不会测试常量,属性或方法的存在。当然,除非您正在测试代码生成器。