jimigrunge / invoke-private-methods
这是一个辅助单元测试私有方法的类。
3.0.1
2022-11-19 20:09 UTC
Requires
- php: ^8.1
Requires (Dev)
- php-coveralls/php-coveralls: ^2.5
- phpunit/phpcov: ^8.2
- phpunit/phpunit: ^9.5
- sebastian/phpcpd: ^6.0
- squizlabs/php_codesniffer: ^3.7
This package is auto-updated.
Last update: 2024-09-20 00:09:17 UTC
README
这是一个辅助单元测试私有方法的类。它可以作为一个独立的类使用,或者作为一个特性,可以通过编程方式或静态方式调用。
尽管在大多数情况下不建议测试私有方法,但有时这是必要的。例如,为了确保除当前使用方法之外的保护方法中的计算正确。因此创建了此仓库。
注意:我主要使用PhpUnit进行所有测试,因此对于其他测试工具,我不做任何保证,因为我还没有使用过它们。
安装
$ composer require jimigrunge/invoke-private-methods
版本要求说明
如果您使用的PHP版本低于8.1,请使用2.0分支;如果您使用的PHP版本低于7.1,请使用1.0分支。
$ composer require jimigrunge/invoke-private-methods:~1.0
使用方法
class InvokePrivateMethod
此类可用于测试私有和受保护的方法。
一旦使用'use'语句包含该类,您可以通过两种方式之一使用它。您可以选择创建一个InvokePrivateMethod
的实例并调用invokeMethod
,如testMyMethod()
,或者静态调用invoke()
,如testMyMethodStatically()
。
<?php // Include class to call private methods use Jimigrunge\InvokePrivateMethods\InvokePrivateMethod; class testclass extends \PHPUnit_Framework_TestCase { /** @var InvokePrivateMethod */ private $invoker; private $dummyObject; public function setUp() { // Instantiate the class $this->invoker = new InvokePrivateMethod(); $this->dummyObject = new DummyClass(); } public function testMyMethod() { // Call invoke method on private function $result = $this->invoker->invokeMethod($this->dummyObject, 'myPrivateFunction', ['param1']); $this->assertEquals('Test Success', trim($result)); } public function testMyMethodStatically() { // Can also be used statically $result = InvokePrivateMethod::invoke($this->dummyObject, 'myPrivateFunction', ['param1']); $this->assertEquals('Test Success', trim($result)); } }
trait InvokePrivateMethodTrait
此特性可用于直接将功能添加到您的测试类中,以便它可以内部调用。
与完整类的使用一样,您可以通过两种方式之一使用它。您可以选择调用$this->invokeMethod
,如testMyMethod()
,或者静态调用self::invoke()
,如testMyMethodStatically()
。
<?php // Include trait to call private methods use Jimigrunge\InvokePrivateMethods\Traits\InvokePrivateMethodTrait; class testclass extends \PHPUnit_Framework_TestCase { use InvokePrivateMethodTrait; private $dummyObject; public function setUp() { $this->dummyObject = new DummyClass(); } public function testMyMethod() { // Call invoke method on private function $result = $this->invokeMethod($this->dummyObject, 'myPrivateFunction', ['param1']); $this->assertEquals('Test Success', trim($result)); } public function testMyMethodStatically() { // Can also be used statically $result = self::invoke($this->dummyObject, 'myPrivateFunction', ['param1']); $this->assertEquals('Test Success', trim($result)); } }
更多详细信息
更详细的用法示例可以在/tests
目录中的测试中找到。
报告问题或功能请求
问题和功能请求在Github问题跟踪器中跟踪。
待办事项
目前没有