eloquent/peridot-phony

此包已被放弃且不再维护。作者建议使用eloquent/phony-peridot包。

Peridot 的 Phony 集成。

3.0.0 2020-01-06 02:56 UTC

This package is not auto-updated.

Last update: 2022-02-01 13:00:22 UTC


README

Current version image

安装

composer require --dev eloquent/phony-peridot

另请参阅

什么是 Phony for Peridot

Phony for Peridot 是一个为 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文件