tembra / pest-plugin-x-args
Pest X-Args 插件
2.0.0
2024-01-13 12:06 UTC
Requires
- php: ^8.1
- pestphp/pest: ^2.5
- pestphp/pest-plugin: ^2.0.1
Requires (Dev)
README
此仓库包含 Pest X-Args 插件。
此插件向 Pest 添加了接受 --x-
参数的功能,并可以从测试用例中访问它们。
如果您想用 Pest 测试您的应用程序,请访问主 Pest 仓库。
安装
使用 Composer » 安装此插件。
composer require tembra/pest-plugin-x-args --dev
版本控制
此插件使用 语义版本控制
- 主版本号始终与 Pest 相同
- v2.x 与 Pest v2.x 兼容
用法
运行 Pest,并带有您希望测试用例可用的任何 --x-
参数。
vendor/bin/pest --x-username=random --x-password=secret
如果使用 Composer 脚本,请记得在脚本名称后使用特殊参数操作符 --
。
composer test-script-name -- --x-username=random --x-password=secret
在您的测试用例中使用 hasXArg()
和 getXArg()
函数。
use function Tembra\Pest\Plugins\XArgs\{hasXArg}; use function Tembra\Pest\Plugins\XArgs\{getXArg}; it('has --x-username and --x-password argument', function () { $hasUsername = hasXArg('username'); $hasPassword = hasXArg('password'); expect($hasUsername)->toBe(true) ->and($hasPassword)->toBe(true); }); it('can login with valid credentials', function () { $username = getXArg('username'); $password = getXArg('password'); if (null === $username || null === $password) { $this->fail('You need to send valid username/password through command line.'); } // try to login with $username and $password // and make expectations and/or assertions with result });
关于参数
参数首先通过 Pest 中的 Symfony\Component\Console\Input\Input
处理,然后发送到此插件和其他插件。因此,那里能工作的东西在这里也应该能工作。
立即,此插件识别 --x-
参数,然后是第一个等号 (=
) 来将参数分成两部分。然后它从第一部分中删除 --x-
。
一些说明
- 参数有一个
key
和一个value
。 - 在参数
--x-test=true
中,键是test
,值是true
。 - 键和值始终是
string
类型。 - 参数可能只有一个
key
,例如--x-active
。在这种情况下,值是一个空字符串。 - 参数
key
不区分大小写。 - 参数
key
不能有等号 (=
)。 - 参数
key
可以使用特殊字符,如果正确转义,除了等号 (=
) 之外。 - 具有相同
key
的参数将覆盖彼此。最后一个参数将保留。 - 没有
key
的参数不可用(例如,--x-=value
)。 - 参数
value
可以在引号之间(例如,--x-key="complex value"
)。 - 参数
value
可以使用特殊字符,如果正确转义。 - 不可用的参数在
hasXArg()
上返回false
,在getXArg()
上返回null
。
要检查一些疯狂的使用情况,您可以查看 tests/PluginTest.php
并使用 Pest 运行它 🚀。
动机
需要在测试用例中访问特定的敏感值(如密码),而无需使用环境变量或文件,以避免将它们提交到本地或远程代码库的风险,即使知道我们可以将这些文件添加到 .gitignore
。
贡献
有任何问题、发现错误或想要讨论/实现新功能?请毫不犹豫地提交问题并/或如果可以的话创建拉取请求。
更多 Pest
- 在 pestphp.com 上探索 Pest 文档。
- 在 Twitter 上关注 Pest: @pestphp
- 在 discord.gg/kaHY6p54JH 或 t.me/+kYH5G4d5MV83ODk0 上加入 Pest 社区。
害虫是一款开源软件,许可协议为 MIT 许可协议。