jippi / 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); }
有关这些方法基于的assertSameAsFile
的更多使用详情,请参阅Cake的文档