Сэмплирование и экспорт
Сэмплирование генератора
Gen::sample() жадно генерирует значения из любого arbitrary для фиксированного seed — быстрый способ глазами оценить, что производит генератор (возвращает значения, а не arbitrary).
Gen::sample(Gen::intBetween(1, 6), count: 5, seed: 42); // [3, 1, 6, 6, 2]Gen::sampleShrinks() делает то же для shrink-дерева: генерирует одно значение и перечисляет его первых прямых shrink-кандидатов — самый быстрый способ убедиться, что собственный arbitrary shrink'ается так, как вы задумали.
Gen::sampleShrinks(Gen::intBetween(0, 100), seed: 1);
// ['value' => 87, 'shrinks' => [0, 44, 66, 77, 82, 85, 86]]Экспорт контрпримера
CounterExample::toArray() и toJson() отдают нормализованное представление для репортёров и CI-артефактов, включая вложенное состояние DTO и маркеры рекурсии. Чтобы закрепить shrunk scalar/array/enum-кейс как регрессионный пример:
$code = $violation->getCounterExample()->toExamplesCode('holdsExamples');Сгенерированный метод yield'ит аргументы в порядке параметров. Неподдерживаемые runtime-объекты бросают LogicException вместо генерации кода, который не смог бы выполниться.