tembra/pest-plugin-x-args

Pest X-Args 插件

2.0.0 2024-01-13 12:06 UTC

This package is auto-updated.

Last update: 2024-09-13 13:47:43 UTC


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

害虫是一款开源软件,许可协议为 MIT 许可协议