potherca / phpunit-testcase-traits

此包已被废弃,不再维护。没有建议的替代包。

提供帮助函数的特质,用于在 PHPUnit 测试用例中使用。

v0.7.0 2018-01-25 13:34 UTC

README

project-stage-badge license-badge

提供帮助函数的特质,用于在 PHPUnit 测试用例中使用。

简介

此项目包含各种特质,提供方便的方法,用于创建测试代码时出现的任务。

安装

composer require 'potherca/phpunit-testcase-traits'

使用

在类定义中添加一个所需的特质 use 语句。然后可以在定义的类中使用该特质的公共 API。

有关如何使用特质的完整详情,请参阅 PHP 手册中关于特质的部分

PHP 5.3 兼容性

特质是在 PHP5.4 中引入的,因此对于旧版本(即 PHP5.3),需要另一种方式来加载特质的函数。提供了一个 traitShim 函数,可以从 魔术 __call 方法 使用。

这通过向每个要使用特质的(抽象基)测试用例添加以下代码来实现(1)

class ExampleTest extends \PHPUnit_Framework_TestCase
{
    // ....

    final public function __call($name, array $parameters)
    {
        return \Potherca\PhpUnit\Shim\Util::traitShim($this, $name, $parameters);
    }

    // ....
}

然后可以使用 所有 特质的公共 API。

为了帮助文本编辑器和 IDE 提供自动完成功能,可以在测试用例类中添加以下文档块

/**
 * @method array[] createDataProvider(array $subject)
 * @method \PHPUnit_Framework_MockObject_MockObject | \PHPUnit\Framework\MockObject\MockObject createObjectFromAbstractClass($className)
 * @method string getCompatibleExceptionName($exceptionName)
 * @method void setDataProviderMaximumKeyLength($length)
 * @method void setDataProviderSortByKey($sort)
 * @method void setNonPublicProperty($subject, $name, $value)
 */

(1) 也可以通过 src/Shim/function.traitShim.php 使用 composer 的自动加载器来加载。

可用的特质

  • CreateDataProviderTrait -- 创建数据提供者数组。
    从给定的一维值数组创建一个 键/值 对,该数组旨在从 TestCase 的数据提供者方法返回。

  • CreateObjectFromAbstractClassTrait -- 从抽象类创建对象实例。
    创建一个具体对象,其方法可以被调用和测试。

  • GetCompatibleExceptionNameTrait -- 为 (new) PHP7 异常提供与 PHP5 兼容的 PHPUnit_Framework_Exception 名称。

  • SetNonPublicPropertyTrait -- 更改非公共类的属性值。

函数使用示例可在 example 目录中找到。所有示例都可以使用 phpunit 运行。只需使用 --config 标志指向所需的配置文件(对于特质为 example-php-phpunit.xml,对于 PHP5.3 兼容的特质为 example-php53-phpunit.xml)。

著作权