此软件包已被废弃,不再维护。未建议替代软件包。

Hydra 提供了一种简单、干净的方式来测试 Laravel 和 Lumen 软件包针对多个版本。

0.1.10 2020-12-29 11:14 UTC

This package is auto-updated.

Last update: 2022-08-06 19:41:05 UTC


README

为 Laravel 和 Lumen 软件包提供简单、干净的测试。支持 Laravel/Lumen 5.8.x、6.x、7.x 和 8.x。

稳定性声明

此软件包仍处于早期开发阶段,存在许多错误和计划中的功能。请自行承担使用风险。

要求

  • PHP 7.1.3 至 8.0

致谢

此软件包受到 orchestra/testbench 软件包的极大启发。

配置

Hydra 配置必须写入项目的基础目录。以下为可识别的文件名:

  • hydra.yaml
  • hydra.yml
  • hydra.json
  • hydra.php
  • .hydra.yaml
  • .hydra.yml
  • .hydra.json
  • .hydra.php

sandbox(默认为 ./hydra

Hydra 基础目录,bench 将在此处安装。

benches

bench 通过名称(其键)和框架(laravellumen)以及框架版本约束来描述。例如,以下配置

benches:
  laravel-7:
    framework: laravel
    constraint: ^7.0

将创建一个使用 laravel/laravel 框架和 SemVer 约束 ^7.0 的 bench laravel-7

composer(默认为 composer

由于 Hydra 依赖于 composer 可执行文件,您可能想要覆盖 composer 可执行文件。

例如

composer: /user/bin/composer.phar

用法

安装 bench

要安装配置文件中定义的 bench,请运行

vendor/bin/hydra install

您可以使用 --only [bench] 仅安装单个 bench(在矩阵管道期间)。

清理 bench

要删除所有 bench,只需运行

vendor/bin/hydra clean

在 PHPUnit 测试中

设置 PHPUnit

由于 Hydra 将基本劫持 composer 自动加载器,您需要替换 PHPUnit 启动文件。在安装期间,Hydra 生成一个新的启动文件,该文件必须在 PHPUnit 配置中指定。

例如,在一个 phpunit.xml 文件中

<phpunit
  bootstrap="hydra/bootstrap.php">
    <!-- Your other configurations -->
</phpunit>

选择测试 bench

通过 HYDRA_BENCH 环境变量实现测试 bench 的选择。

您可以像这样运行 phpunit

HYDRA_BENCH=laravel-7 phpunit [args]

使用 HydraTestCase

为了设置您的包的测试,您必须使用 Windy\Hydra\Testing\HydraTestCase 类。

定义配置
use Windy\Hydra\Testing\HydraTestCase;

class ExampleTest extends HydraTestCase
{
    protected function setUpConfig(): array
    {
        return [
            'your-package' => [
                'foo' => 'bar'
            ]
        ];
    }
}
定义您的提供者
use Windy\Hydra\Testing\HydraTestCase;

class ExampleTest extends HydraTestCase
{
    protected function setUpProviders(): array
    {
        return [
            \Me\MyPackage\MyPackageProvider::class
        ];
    }
}
Laravel 和 Lumen 的特定设置

如果您需要为 Laravel 或 Lumen 运行特定设置,您可以使用

use Windy\Hydra\Testing\HydraTestCase;

class ExampleTest extends HydraTestCase
{
    /**
     * Set up Laravel application.
     */
    protected function setUpLaravel(): void
    {
        // Run only for Laravel applications
    }

    /**
     * Setup the Lumen application.
     */
    protected function setUpLumen(): void
    {
        // Run only for Lumen applications
    }
}