awesomite/mock-finals

模拟最终类和方法

v1.0.1 2020-07-25 16:48 UTC

This package is auto-updated.

Last update: 2024-08-26 02:18:15 UTC


README

Build Status

Mock Finals

在测试中模拟最终类和方法。该库覆盖现有的类加载器,并使用 uopz_flags 移除运行时中的所有 final 出现。

安装

composer require --dev awesomite/mock-finals

要求

  • PHP ^7.1
  • uopz (pecl install uopz)

使用案例

通常来说,这样做是不好的实践。然而,当你必须处理遗留代码或第三方库时,它可能会有所帮助。请阅读以下文章,了解如何正确处理代码中的 final 关键字。

示例

class Greeter
{
    final public function sayHello(): string
    {
        return 'hello';
    }
}

class MyTest extends \PHPUnit\Framework\TestCase
{
    public function testSayHello(): void
    {
        $mock = $this->getMockBuilder(Greeter::class)->getMock();
        $mock
            ->expects($this->once())
            ->method('sayHello')
            ->willReturn('goodbye')
        ;
        $this->assertSame('goodbye', $mock->sayHello());
    }
}