eloquent/phony-peridot

此软件包已被废弃,不再维护。未建议替代软件包。

Peridot 的 Phony 集成。

3.0.0 2020-01-06 02:56 UTC

This package is auto-updated.

Last update: 2023-08-08 04:05:35 UTC


README

不再维护

此软件包不再维护。请参阅[此声明]获取更多信息。

[此声明]: https://gist.github.com/ezzatron/713a548735febe3d76f8ca831bc895c0# Phony for PHPUnit

Peridot 的 Phony

Current version image

安装

composer require --dev eloquent/phony-peridot

另请参阅

什么是 Peridot 的 Phony

Peridot 的 Phony 是一个用于 Peridot 测试框架的插件,它通过 Phony 模拟框架提供自动装配的测试依赖项。

换句话说,如果 Peridot 测试(或测试套件)需要一个模拟对象,它可以被定义为具有适当的 类型声明 的参数,并在运行时自动接收该类型的模拟作为参数。

存根 对于 callable 类型,以及其他类型声明的 "空" 值也受到支持。

插件安装

该插件必须安装到 Peridot 配置文件

use Eloquent\Phony\Peridot\PeridotPhony;
use Evenement\EventEmitterInterface;

return function (EventEmitterInterface $emitter) {
    PeridotPhony::install($emitter);
};

依赖注入

一旦安装了插件,任何定义了参数的测试或测试套件在运行时都会提供相应的参数

describe('Phony for Peridot', function () {
    it('Auto-wires test dependencies', function (PDO $db) {
        expect($db)->to->be->an->instanceof('PDO');
    });
});

注入的模拟对象

Phony for Peridot 支持自动注入 模拟对象。由于 Phony 不会改变被模拟对象的接口,因此需要使用 on() 方法来获取 模拟句柄,以便执行 存根化验证

use function Eloquent\Phony\on;

describe('Phony for Peridot', function () {
    it('Supports stubbing', function (PDO $db) {
        on($db)->exec->with('DELETE FROM users')->returns(111);

        expect($db->exec('DELETE FROM users'))->to->equal(111);
    });

    it('Supports verification', function (PDO $db) {
        $db->exec('DROP TABLE users');

        on($db)->exec->calledWith('DROP TABLE users');
    });
});

注入的存根

Phony for Peridot 支持自动注入具有 callable 类型声明的参数的 存根

describe('Phony for Peridot', function () {
    it('Supports callable stubs', function (callable $stub) {
        $stub->with('a', 'b')->returns('c');
        $stub('a', 'b');

        $stub->calledWith('a', 'b')->firstCall()->returned('c');
    });
});

支持的类型

以下表格列出了支持的类型声明及其对应的值

参数类型 提供的值
(无) null
bool false
int 0
float .0
string ''
array []
stdClass (object) []
callable stub()
Closure function () {}
Generator (function () {return; yield;})()

当使用上述未列出的 类型声明 时,提供的值将是指定类型的 模拟

由于必要,提供的值不会包含 模拟句柄。为了获取句柄,只需使用 on()

use function Eloquent\Phony\on;

it('Example mock handle retrieval', function (ClassA $mock) {
    $handle = on($mock);
});

许可证

有关完整的版权和许可证信息,请查看 LICENSE 文件