Assume::that() vs Gen::filter()
Assume::that()
Отбрасывает текущую попытку, если предусловие не выполнено. runs — это число успешных проверок, поэтому отброшенные попытки замещаются новыми. Предпочитайте Assume::that() вместо Gen::filter(), когда доля отбрасываний низка; если отбрасывается больше 90% попыток, раннер предупреждает о невероятно сконфигурированных генераторах.
Assume::that($cap >= $baseSeconds);Число отброшенных попыток ограничено maxDiscards (по умолчанию runs * 10). При превышении бюджета свойство падает с GaveUpException, публичные поля которого сообщают required/successful runs, discarded attempts, total attempts и бюджет. Переопределите его, когда легитимный домен разрежен:
#[Property(runs: 200, maxDiscards: 5_000)]Конструируйте валидные входы (Gen::flatMap() / Gen::draw()) вместо увеличения бюджета, когда зависимость можно закодировать напрямую.