mathieu-bour / hydra
Hydra 提供了一种简单、干净的方式来测试 Laravel 和 Lumen 软件包针对多个版本。
Requires
- php: ^7.1.3 || ^8.0
- ext-json: *
- phpcompatibility/php-compatibility: *
- phpunit/phpunit: ^7.0 || ^8.0 || ^9.0
- symfony/console: ^4.0 || ^5.2
- symfony/process: ^4.0 || ^5.2
- symfony/yaml: ^4.0 || ^5.2
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^0.7.1
- laravel/framework: 5.8.* || ^7.0 || ^8.0
- laravel/lumen-framework: 5.8.* || ^7.0 || ^8.0
- mathieu-bour/coding-standard: ^1.0
- symfony/var-dumper: ^4.0 || ^5.2
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 通过名称(其键)和框架(laravel
或 lumen
)以及框架版本约束来描述。例如,以下配置
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 } }