4

我试图找出最好的或正确的方法来检查一个类是否有一个用 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。

4

2 回答 2

9

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

就像是:

public function testHasSiteExportedConstant()
{
    $mailer = new \ReflectionClass(SiteExporter::class);
    $this->assertArrayHasKey('SITE_EXPORTED', $mailer->getConstants());
}
于 2016-09-02T07:19:58.943 回答
5

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

于 2016-09-02T07:46:53.200 回答