mnapoli/phpunit-easymock

用于构建PHPUnit模拟对象的辅助工具

1.4.0 2020-10-12 13:57 UTC

This package is auto-updated.

Last update: 2024-09-12 23:17:51 UTC


README

轻松构建PHPUnit模拟对象。

Total Downloads

为什么?

这个库不是一个模拟库。它只是几个辅助工具,用于更轻松地编写最常见的模拟。

它没有重新发明任何东西,也不打算覆盖每个用例:只覆盖最常见的。

安装

$ 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许可证下发布。