mnapoli / phpunit-easymock
用于构建PHPUnit模拟对象的辅助工具
1.4.0
2020-10-12 13:57 UTC
Requires
- php: >=7.3
- phpunit/phpunit: ^8.5|^9.0
README
轻松构建PHPUnit模拟对象。
为什么?
这个库不是一个模拟库。它只是几个辅助工具,用于更轻松地编写最常见的模拟。
它没有重新发明任何东西,也不打算覆盖每个用例:只覆盖最常见的。
安装
$ composer require --dev mnapoli/phpunit-easymock
为了能在测试中使用EasyMock,你必须在你的类中包含这个特性
class MyTest extends \PHPUnit\Framework\TestCase { use \EasyMock\EasyMock; // ... }
用法
这是一个非常常见的PHPUnit模拟对象的例子
$mock = $this->createMock('My\Class'); $mock->expect($this->any()) ->method('sayHello') ->willReturn('Hello');
太糟糕了!
这是使用EasyMock编写它的方法
$mock = $this->easyMock('My\Class', [ 'sayHello' => 'Hello', ]);
如果你想要断言方法只被调用一次(即$mock->expect($this->once())
),请使用spy()
代替
$mock = $this->easySpy('My\Class', [ 'sayHello' => 'Hello', ]);
功能
你可以模拟方法,使其返回值
$mock = $this->easyMock('My\Class', [ 'sayHello' => 'Hello', ]);
或者使用回调函数
$mock = $this->easyMock('My\Class', [ 'sayHello' => function ($name) { return 'Hello ' . $name; }, ]);
你也可以通过提供一个Exception
实例,让方法抛出异常
$mock = $this->easyMock('My\Class', [ 'sayHello' => new \RuntimeException('Whoops'), ]);
可以在现有的模拟上再次调用mock()
方法
$mock = $this->easyMock('My\Class'); $mock = $this->easyMock($mock, [ 'sayHello' => 'Hello', ]);
如果呢?
如果你想使用断言或其他PHPUnit功能,只需这样做
$mock = $this->easyMock('My\Class', [ 'sayHello' => 'hello', ]); $mock->expects($this->once()) ->method('sayGoodbye') ->willReturn('Goodbye');
模拟是普通的PHPUnit模拟,这里没有特别之处。
贡献
查看CONTRIBUTING文件。
许可证
在MIT许可证下发布。