friendsofcake / cakephp-test-utilities
包含支持特性以简化单元测试的包。
3.0.0
2023-09-24 03:34 UTC
Requires
- cakephp/cakephp: ^5.0
Requires (Dev)
- phpunit/phpunit: ^10.1
README
此包包含支持特性,以简化单元测试。
通过composer安装
您应使用composer将此包安装到项目中。要这样做,您可以运行以下命令
composer require friendsofcake/cakephp-test-utilities
特性
在此阶段有两个特性
AccessibilityHelperTrait
: 获取访问受保护的属性和方法。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
。