Skip to content

Обзор API

Эта страница отображает каждый @api-тип в src/ — фактический публичный контракт, взятый проходом рефлексии (docs/scripts/reflect-api.php), а не то, что случайно упомянуто в README. Каждое имя класса ссылается на сгенерированную справочную страницу (docs/scripts/generate-api.mjs) с его публичными свойствами и сигнатурами методов из того же прохода рефлексии.

С чего начать

ТипРоль
PropertyАтрибут #[Property]runs, seed, generators, maxShrinks, examples, maxDiscards, timeoutMs, budgetMs.
GenСтатическая фабрика всех встроенных генераторов — см. обзор генераторов.
AssumeAssume::that(bool) — отбросить текущую попытку.
ArbitraryInterfaceРеализуйте его для своего генератора.
ShrinkableЗначение + ленивое shrink-дерево — leaf(), of(), map(). См. Shrinking.
CounterExampleДанные фальсифицированного прогона — toArray(), toJson(), toExamplesCode().
Classifylabel(), when(), cover() — см. Распределение.

Stateful-тестирование

ТипРоль
CommandИнтерфейс: preCondition/nextState/run/postCondition + \Stringable.
CommandSequenceСгенерированная, shrink'уемая последовательность команд.
StateMachineStateMachine::check() — прогоняет последовательность против свежей системы.

См. State machine: концепции.

Падения

Каждое исключение пакета с фактическими readonly-полями и геттерами (не просто упоминание по имени): справочник исключений.

Публичное, но не то, с чего начинают

Два @api-члена существуют для более узкого, продвинутого применения, чем «написать #[Property]-тест»:

  • Random::__construct(int $seed) — ручное построение Random для проверки собственного ArbitraryInterface в изоляции, вне запущенного property. Внутри property Random всегда инжектируется раннером.
  • Classify::beginRun() / flushRun() / flushRequirements() — runner-lifecycle-хуки, которые PropertyInterceptor вызывает для сброса и слива буфера распределения текущего прогона. Публичны потому что интерцептор живёт в другом namespace (Internal\), а не потому что тестовый код должен их вызывать.

AssumptionSkipped намеренно отсутствует на этой карте — он публичный, но не @api; см. заметку внизу справочника исключений.

Эта страница и Исключения сверяются со снимком рефлексии src/, а не поддерживаются по памяти — см. issue #29, какие пробелы это закрыло.