friendsofcake/cakephp-test-utilities

包含支持特性以简化单元测试的包。

3.0.0 2023-09-24 03:34 UTC

This package is auto-updated.

Last update: 2024-08-24 05:40:27 UTC


README

此包包含支持特性,以简化单元测试。

通过composer安装

您应使用composer将此包安装到项目中。要这样做,您可以运行以下命令

composer require friendsofcake/cakephp-test-utilities

特性

在此阶段有两个特性

  1. AccessibilityHelperTrait : 获取访问受保护的属性和方法。
  2. CompareTrait : 断言方法,比较HTML、JSON、XML文件

AccessibilityHelperTrait

此特性使您能够访问受保护的属性和方法。您不需要具有传递方法的新类。它使用反射来实现此功能。

设置

将特性添加到测试用例顶部

use \FriendsOfCake\TestUtilities\AccessibilityHelperTrait;

现在您拥有了特性,您需要设置要访问的对象。您可以在setUp()中全局为整个测试设置,或者在测试方法中设置

$object = new ObjectIAmGoingToTest();
$this->setReflectionClassInstance($object);
$this->defaultReflectionTarget = $object; // (optional)

受保护的属性

您可以获取和设置受保护的属性

$data = 'FriendsOfCake';
$this->setProtectedProperty('_myProperty', $data, $object);

$expected = $data;
$actual = $this->getProtectedProperty('_myProperty', $object);
$this->assertEquals($expected, $actual);

受保护的方法

您可以直接调用受保护的方法

$parameters = [$argument1, $argument2];

$expected = $expectedReturnValue;
$actual = $this->callProtectedMethod('_myMethod', $parameters, $object);
$this->assertEquals($expected, $actual);

CompareTrait

此特性有助于将测试结果作为字符串进行比较

设置

将特性添加到测试用例顶部并定义_compareBasePath属性,以便特性知道比较文件的存储位置

...
use \FriendsOfCake\TestUtilities\CompareTrait;

class MyTest extends TestCase
{
    use CompareTrait;

    public function setUp(): void
    {
        parent::setUp();

        $this->_compareBasePath = 'comparisons/MyTest/';
    }
}

用法

每个方法的行为类似于核心的assertSameAsFile方法

public function testExample()
{
    $html = '<p>Some html</p>';
    $xml = '<?xml version="1.0" encoding="UTF-8"?><thing>...</thing>';
    $json = ['actually' => 'this is an array'];

    $this->assertHtmlSameAsFile('some.html', $html);
    $this->assertXmlSameAsFile('some.xml', $xml);
    $this->assertJsonSameAsFile('some.json', $json);
}

有关这些方法使用的更多信息,请参阅Cake的文档,这些方法基于该文档中的assertSameAsFile