Кешування маршрутів та конфігурацій під час тестування в Laravel 12.38

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 14 листопада, 2025
Цього тижня команда Laravel випустила версію 12.38.0, яка представила кілька цікавих нововведень, зокрема тестові трейти `WithCachedRoutes` і `WithCachedConfig`. Які ще зміни чекають на вас у цій версії? Читайте далі, щоб дізнатися про всі деталі та нововведення

Цього тижня команда Laravel випустила версію 12.38.0, яка включає нові функції, зокрема тестові трейти WithCachedRoutes та WithCachedConfig, новий запит для команди model:show та інше.

# Тестові трейти WithCachedRoutes

Люк Кузміш запропонував трейти WithCachedRoutes, які дозволяють один раз створити маршрути і зберігати їх у пам’яті. Це економить час, оскільки маршрути генеруються лише один раз для всіх тестів у вашій тестовій сукупності:

use App\Http\Controllers\UserController;
use Illuminate\Foundation\Testing\WithCachedRoutes;
use Tests\TestCase;

// Pest
pest()->use(WithCachedRoutes::class);

test('basic example', function () {
    $this->get(action([UserController::class, 'index']));

    // ...
});

// PHPUnit
class BasicTest extends TestCase
{
    use WithCachedRoutes;

    /**
     * Основний функціональний тест.
     */
    public function test_basic_example(): void
    {
        $response = $this->get(action([UserController::class, 'index']));

        // ...
    }
}

Деталі можна знайти у Pull Request #57623.

# Тестові трейти WithCachedConfig

Люк Кузміш також запровадив трейти WithCachedConfig, що створює налаштування вашого додатка один раз і повторно використовує їх у всіх тестах:

use Illuminate\Foundation\Testing\WithCachedConfig;
use Tests\TestCase;

// Pest
pest()->use(WithCachedConfig::class);

test('modifies config', function () {
    config(['services.postmark.key' => 'xyz']);
    expect(config('services.postmark.key'))->toBe('xyz');
});

test('uses default config', function () {
    expect(config('services.postmark.key'))->not->toBe('xyz');
});

// PHPUnit
class ConfigTest extends TestCase
{
    use WithCachedConfig;

    /**
     * Тест, що модифікує налаштування.
     */
    public function test_modifies_config(): void
    {
        $this->assertEquals('xyz', config('services.postmark.key'));
    }

    /**
     * Тест, що не змінює налаштування.
     */
    public function test_uses_default_config(): void
    {
        $this->assertNotEquals('xyz', config('services.postmark.key'));
    }
}

Деталі за посиланням: Pull Request #57663.

# Команда model:show тепер запитує введення

Разін Шайх оновив команду model:show, щоб вона запитувала введення, якщо команду запущено без аргументів. Ось приклади до і після:

До Laravel 12.38
До Laravel 12.38
Починаючи з Laravel 12.38+
Починаючи з Laravel 12.38+

Деталі у Pull Request #57671.

# Нотатки про реліз

Повний список нових функцій і оновлень ви можете переглянути нижче, а також різницю між версіями 12.37.0 та 12.38.0 на GitHub. Нотатки про реліз взято з журналу змін:

# v12.38.0