eloquent / phony-kahlan
此软件包已被废弃,不再维护。未建议替代软件包。
Kahlan 的 Phony
4.0.0
2020-12-30 03:30 UTC
Requires
- php: ^7.3 || ^8
- eloquent/phony: ^5
- kahlan/kahlan: ^5
Requires (Dev)
This package is auto-updated.
Last update: 2023-08-08 04:12:19 UTC
README
不再维护
此软件包不再维护。有关更多信息,请参阅此声明。
Kahlan 的 Phony
安装
composer require --dev eloquent/phony-kahlan
另请参阅
- 阅读文档。
- 阅读Kahlan 文档。
- 访问主 Phony 仓库。
什么是 Kahlan 的 Phony?
Kahlan 的 Phony 是 Kahlan 测试框架的插件,它提供了与 Phony 模拟框架的一般集成,以及可选的自动注入测试依赖项。
换句话说,如果 Kahlan 测试(或测试套件)需要一个模拟对象,它可以在运行时定义为具有适当的 类型声明 的参数,并会自动接收该类型的模拟作为参数。
存根 支持 callable
类型,以及其他类型声明的 "空" 值也是 支持的。
插件安装
只有在使用插件的 依赖注入 功能时才需要安装。该插件可以像这样安装在 Kahlan 配置文件中
<?php // kahlan-config.php // disable monkey-patching for Phony classes $this->commandLine()->set('exclude', ['Eloquent\Phony']); // install the plugin once autoloading is available Kahlan\Filter\Filters::apply($this, 'run', function (callable $chain) { Eloquent\Phony\Kahlan\install(); return $chain(); });
依赖注入
一旦安装了插件,任何定义了参数的测试或测试套件在运行时都会提供匹配的参数
describe('Phony for Kahlan', function () { it('Auto-wires test dependencies', function (PDO $db) { expect($db)->toBeAnInstanceOf(PDO::class); }); });
注入模拟对象
Kahlan 的 Phony 支持自动注入 模拟对象。由于 Phony 不会修改被模拟对象的接口,因此需要使用 on()
来检索 模拟句柄 以执行 存根 和 验证。
use function Eloquent\Phony\Kahlan\on; describe('Phony for Kahlan', function () { it('Supports stubbing', function (PDO $db) { on($db)->exec->with('DELETE FROM users')->returns(111); expect($db->exec('DELETE FROM users'))->toBe(111); }); it('Supports verification', function (PDO $db) { $db->exec('DROP TABLE users'); on($db)->exec->calledWith('DROP TABLE users'); }); });
注入的存根
Phony for Kahlan 支持自动注入具有 callable
类型声明的 存根
describe('Phony for Kahlan', 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 |
[] |
iterable |
[] |
object |
(object) [] |
stdClass |
(object) [] |
callable |
stub() |
Closure |
function () {} |
Generator |
(function () {return; yield;})() |
当使用上表中未列出的 类型声明 时,提供的值将是一个指定类型的 模拟
出于必要,提供的值将不会被包裹在一个 模拟句柄 中。为了获取句柄,只需使用 on()
use function Eloquent\Phony\Kahlan\on; it('Example mock handle retrieval', function (ClassA $mock) { $handle = on($mock); });
许可证
有关完整的版权和许可证信息,请查看 LICENSE 文件。