检查类是否具有使用PHPUnit定义的常量的正确方法

时间:2016-09-02 07:12:31

标签: php unit-testing testing phpunit class-constants

我试图找出最佳或正确的方法来检查一个类是否有一个用PHPUnit定义的常量。 PHPUnit文档似乎没有涵盖这一点,这让我想知道我是否通过测试来做正确的事情 - 但它是我班级的一个重要特征。

我有以下课程:

<activity>

PurchaseManager.php

...部分测试类有这个测试:

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

PurchaseManagerTest.php

这是对的吗?它通过了,但我只是想知道这是否准确和最佳实践。

我正在使用PHPUnit 5.0.8。

2 个答案:

答案 0 :(得分:6)

我为此目的使用Reflection类。它有getConstants方法,它返回一个关联数组[<constant_name> => <constant_value>, ...]

类似的东西:

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

答案 1 :(得分:5)

我永远不会测试常量,属性或方法的存在。当然,除非您正在测试代码生成器。