joomla / test
Joomla 测试助手包
3.0.0
2023-10-08 14:37 UTC
Requires
- php: ^8.1.0
Requires (Dev)
- joomla/database: ^3.0
- phan/phan: ^5.4.2
- phpstan/phpstan: ^1.10.7
- phpunit/phpunit: ^9.5.28
- squizlabs/php_codesniffer: ^3.7.2
Suggests
- joomla/database: To use the database test case, install joomla/database
- phpunit/phpunit: To use the database test case, install phpunit/phpunit
Conflicts
- joomla/database: <2.0
This package is auto-updated.
Last update: 2024-09-08 16:39:49 UTC
README
此包是工具集合,可简化单元测试的一些工作。
TestHelper
Joomla\Test\TestHelper
是一个静态助手类,可在使用 PHPUnit 进行单元测试时减轻重复性工作的痛苦。
模拟
有两种方法可以帮助使用 PHPUnit 模拟对象。
TestHelper::assignMockCallbacks
此助手方法提供了一种批量配置模拟回调的简单方式。
use Joomla\Test\TestHelper; class FooTest extends \PHPUnit_Framework_TestCase { public function testFoo() { // Create the mock. $mockFoo = $this->getMock( 'Foo', // Methods array. array(), // Constructor arguments. array(), // Mock class name. '', // Call original constructor. false ); $mockCallbacks = array( // 'Method Name' => <callback> 'method1' => array('\mockFoo', 'method1'), 'method2' => array($this, 'mockMethod2'), ); TestHelper::assignMockCallbacks($mockFoo, $this, $mockCallbacks); } public function mockMethod2($value) { return strtolower($value); } }
TestHelper::assignMockReturns
此助手方法提供了一种批量配置模拟返回值的简单方式。
use Joomla\Test\TestHelper; class FooTest extends \PHPUnit_Framework_TestCase { public function testFoo() { // Create the mock. $mockFoo = $this->getMock( 'Foo', // Methods array. array(), // Constructor arguments. array(), // Mock class name. '', // Call original constructor. false ); $mockReturns = array( // 'Method Name' => 'Canned return value' 'method1' => 'canned result 1', 'method2' => 'canned result 2', 'method3' => 'canned result 3', ); TestHelper::assignMockReturns($mockFoo, $this, $mockReturns); } }
反射
有三种方法可以帮助反射。
TestHelper::getValue
TestHelper::getValue
方法允许您获取任何受保护或私有属性的值。
use Joomla\Test\TestHelper; class FooTest extends \PHPUnit_Framework_TestCase { public function testFoo() { $instance = new \Foo; // Get the value of a protected `bar` property. $value = TestHelper::getValue($instance, 'bar'); } }
此方法应谨慎使用。通常更合适使用 PHPUnit 的 assertAttribute*
方法。
TestHelper::setValue
TestHelper::setValue
方法允许您设置任何受保护或私有属性的值。
use Joomla\Test\TestHelper; class FooTest extends \PHPUnit_Framework_TestCase { public function testFoo() { $instance = new \Foo; // Set the value of a protected `bar` property. TestHelper::setValue($instance, 'bar', 'New Value'); } }
此方法对于向对象注入值以便测试 getter 方法非常有用。
TestHelper::invoke
TestHelper::invoke
方法允许您调用任何受保护或私有方法。指定对象和方法名称后,任何剩余的参数都会传递给被调用的方法。
use Joomla\Test\TestHelper; class FooTest extends \PHPUnit_Framework_TestCase { public function testFoo() { $instance = new \Foo; // Invoke the protected `bar` method. $value1 = TestHelper::invoke($instance, 'bar'); // Invoke the protected `bar` method with arguments. $value2 = TestHelper::invoke($instance, 'bar', 'arg1', 'arg2'); } }
通过 Composer 安装
将 "joomla/test": "~2.0"
添加到 composer.json 中的 require 块,然后运行 composer install
。
{ "require": { "joomla/test": "~2.0" } }
或者,您可以直接在命令行运行以下命令
composer require joomla/test "~2.0"