Laracode
Laracode

FakerPHP - случайный элемент

Иногда при определении фабрик вам может понадобиться выбрать случайный элемент из массива. Поскольку Laravel под капотом использует FakerPHP, вы можете сделать это, вызвав метод randomElement.

<?php

// Получить случайный тип подписки
$random = fake()->randomElement(['basic', 'premium']);

// Получить случайную букву
$random = fake()->randomElement(['a', 'b', 'c']);

Тестирование очередей

В Laravel 11 появилась новая возможность тестировать неудавшиеся, повторно запущенные или удалённые задачи очереди, что было затруднительно в предыдущих версиях! Теперь вы можете просто вызвать метод withFakeQueueInteractions у своей задачи (job) и проверить одно из перечисленных действий.

<?php

use App\Jobs\ProcessPodcast;

$job = (new ProcessPodcast)->withFakeQueueInteractions();

$job->handle();

$job->assertReleased(delay: 30);
$job->assertDeleted();
$job->assertNotDeleted();
$job->assertFailed();
$job->assertNotFailed();

Опциональные значения в тестах при помощи Faker

Если у вас есть столбцы в таблице, которые не являются обязательными, и вы хотите генерировать для них значения случайным образом, FakerPHP (используемый в Laravel под капотом) изначально поддерживает опциональные значения 🚀

<?php

// случайная цифра или null
fake()->optional()->randomDigit();

// шанс 90% получить NULL
fake()->optional($weight = 0.1)->randomDigit();

// шанс 10% получить NULL
fake()->optional($weight = 0.9)->randomDigit();

// шанс 90%  получить NULL
fake()->optional($weight = 10)->randomDigit;

// шанс 0% получить NULL
fake()->optional($weight = 100)->randomDigit;

// шанс 50% получить FALSE
fake()->optional($weight = 0.5, $default = false)->randomDigit();

// шанс 10% получить 'abc'
fake()->optional($weight = 0.9, $default = 'abc')->word();