eloquent / peridot-phony
3.0.0
2020-01-06 02:56 UTC
Requires
- php: >=7.2
- eloquent/phony: ^4
- peridot-php/peridot: ^1
Requires (Dev)
- ext-pdo: *
- eloquent/code-style: ^1
- eloquent/phpstan-phony: ^0.7
- errors/exceptions: ^0.2
- friendsofphp/php-cs-fixer: ^2
- peridot-php/leo: ^1
- peridot-php/peridot-code-coverage-reporters: ^3
- phpstan/extension-installer: ^1
- phpstan/phpstan: ^0.12
This package is not auto-updated.
Last update: 2022-02-01 13:00:22 UTC
README
安装
composer require --dev eloquent/phony-peridot
另请参阅
- 阅读文档。
- 阅读Peridot 文档。
- 访问Phony 主要仓库。
什么是 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文件。