Существует ли "простой" способ тестирования пакета на Laravel и Lumen? - PullRequest
2 голосов
/ 20 апреля 2020

Я пишу пакет для 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.

Этот обходной путь звучит довольно странно, и мне было интересно, существует ли какой-либо стандарт для таких тестов .

...