Я пишу пакет для Laravel, и я также хотел бы, чтобы он был совместим с Lumen. В данный момент я использую orchestral / testbench для тестирования моего пакета, но он был сделан для Laravel тестирования, а не для Lumen.
Я ищу способ быть в состоянии протестировать оба из них без изменения моих composer зависимостей между тестовыми прогонами.
Я видел, что можно установить laravel/framework: ^7.0
и laravel/lumen-framework: ^7.0
одновременно, поэтому наконец, создал фиктивное приложение с bootstrap.laravel.php
и bootstrap.lumen.php
.
. Для своих тестов я создал файл bootstrap для PHPUnit:
<?php
declare(strict_types=1);
use Illuminate\Foundation\Testing\TestCase as LaravelTestCase;
use Laravel\Lumen\Testing\TestCase as LumenTestCase;
require_once dirname(__DIR__) . '/vendor/autoload.php';
putenv('TEST_MODE=' . env('TEST_MODE', 'laravel'));
$mode = env('TEST_MODE', 'laravel');
if ($mode === 'lumen') {
class_alias(LumenTestCase::class, 'Sandbox\\TestCase');
require dirname(__DIR__) . '/sandbox/bootstrap/bootstrap.laravel.php';
} else {
class_alias(LaravelTestCase::class, 'Sandbox\\TestCase');
require dirname(__DIR__) . '/sandbox/bootstrap/bootstrap.lumen.php';
}
, который позволяет расширять мои тесты Sandbox\TestCase
, который указывает на тестовый случай Laravel или Lumen в зависимости от переменной окружения TEST_MODE
.
Этот обходной путь звучит довольно странно, и мне было интересно, существует ли какой-либо стандарт для таких тестов .