shift31 / glean
从任何对象方法的输出中生成固定文件
Requires
- php: >=5.4.0
- illuminate/support: 4.2.*
- jms/serializer: ~0.16
- symfony/yaml: ~2.6
This package is not auto-updated.
Last update: 2020-01-24 15:58:49 UTC
README
Laravel 的固定文件生成器
此库提供了一项 Laravel Artisan 命令,可以从任何对象方法的输出生成固定文件。它利用 Laravel 的服务容器和 PHP 的反射功能来实例化类并调用具有指定参数的所需对象方法。数据可以保存为原始 PHP、YAML、JSON 或 XML。
使用案例
尽管有许多测试双库旨在为数据库播种目的而摄取固定文件(即反映模型类),但在复杂应用程序中,可能需要从其他类型的类(例如服务)中具有可重用的固定数据。 Glean 提供了一种轻松捕获任意/复杂数据结构的方法。此工具生成的固定文件旨在用于需要重用预期数据的任何单元测试场景(即存根)。
用法
composer require shift31/glean
- 将
Shift31\Glean\GleanServiceProvider
添加到您的 app/config/app.php 文件中的'providers'
数组中。
帮助
从 Laravel 项目的根目录运行 php artisan help glean
。
示例
想象一个 Acme\Users\UsersService
类,它有一个 getUserRoles($userId)
方法,该方法返回特定用户的角色数组
php artisan glean -a user_roles 'Acme\Users\UsersService' getUserRoles 12345
默认情况下,这将生成一个名为 user_roles.php 的 PHP 文件,位于 app/storage/fixtures,其中包含从 UsersService::getUserRoles
中 gleaned 的数据。
使用接口
Glean 使用 Laravel 的服务容器解析类,因此您可以为 className
参数指定一个接口。
在测试中
$expectedUserRoles = include(__DIR__ . '/../app/storage/fixtures/user_roles.php');
限制
方法参数只能是 PHP 原始值或 null
。此问题的可能解决方案是扩展 GleanCommand
类并创建您自己的自定义 "gleaner"。
待办事项
- 构建固定文件加载器
- 使其无框架化?
- 使编写自定义 gleaners 更容易?