jimigrunge/invoke-private-methods

这是一个辅助单元测试私有方法的类。

3.0.1 2022-11-19 20:09 UTC

This package is auto-updated.

Last update: 2024-09-20 00:09:17 UTC


README

Latest Stable Version Build Status Coverage Status License Total Downloads This is a forkable respository

这是一个辅助单元测试私有方法的类。它可以作为一个独立的类使用,或者作为一个特性,可以通过编程方式或静态方式调用。

尽管在大多数情况下不建议测试私有方法,但有时这是必要的。例如,为了确保除当前使用方法之外的保护方法中的计算正确。因此创建了此仓库。

注意:我主要使用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问题跟踪器中跟踪。

待办事项

目前没有

贡献

CONTRIBUTING.md

许可证

MIT许可证(MIT)