Пакет для тестових асерцій у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 12 квітня, 2025
Ви вже знайомі з пакетом "Test Assertions" для Laravel? Досліджуйте потужні засоби тестування, які допоможуть вам створити надійні додатки за допомогою простих асерцій і методів перевірки. Читайте далі, щоб дізнатися, як ефективно використовувати цей пакет у своїх проектах
Пакет Test Assertions для Laravel, створений Джейсоном Маккрері Jason McCreary, містить корисні твердження для тестування додатків на Laravel. Цей пакет надає трейти з корисними твердженнями, методами-сопоставниками Laravel та загальними допоміжними функціями для тестів:
use JMac\Testing\Traits\AdditionalAssertions;
 
// Твердження трейту
$this->assertActionUsesFormRequest(string $controller, string $method, string $form_request);
$this->assertActionUsesMiddleware(string $controller, string $method, string|array $middleware);
$this->assertRouteUsesFormRequest(string $routeName, string $formRequest);
$this->assertRouteUsesMiddleware(string $routeName, array $middlewares, bool $exact);
$this->assertValidationRules(array $expected, array $actual);
$this->assertExactValidationRules(array $expected, array $actual);
$this->assertValidationRuleContains($rule, string $class);
$this->assertViewHasNull($key);
$this->createFormRequest(string $class, array $data = []);
Автор поділився прикладом використання допоміжної функції freezeNow() у тесті для "заморозки" часу та проведення перевірок.
// Час
$package = Package::factory()->create();
$slug = $this->faker()->slug(2);
 
$this->freezeNow();
 
// Зміни...
$package->slug = $slug;
$package->save();
 
// Перевірка тепер
$package->refresh();
$this->assertNow($package->updated_at);
На завершення, ось кілька матчів, які можна використати для визначення, чи є змінна екземпляром Model, Collection або Eloquent Collection:
use JMac\Testing\LaravelMatchers;
 
// Матчери
LaravelMatchers::isModel(Model $model = null);
LaravelMatchers::isCollection(Collection $collection = null);
LaravelMatchers::isEloquentCollection(Collection $collection = null);
Більше інформації про цей пакет, інструкції з установки та код джерела можна знайти на GitHub.