CloudCastle Clock

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

FrozenClock — orologio congelato

Scopo

Determinismo dei test: il tempo resta fermo finché non viene spostato esplicitamente con setTo()/modify()/advance()/rewind().

A cosa serve e come usarlo

Lo strumento base degli unit test: FrozenClock::from('2026-01-01 00:00:00', 'UTC'); istantanea di un orologio qualsiasi — $clock->freeze().

Esempio

$clock = FrozenClock::from('2026-01-01 00:00:00', 'UTC');
$clock->advance(90.0);            // +90 seconds
$clock->modify('+1 day');
$clock->rewind(30.0);             // 30 seconds back

Anti-pattern

Non usarlo in produzione: il tempo fermo rompe i TTL e le pianificazioni.

Ciclo di vita

stateDiagram-v2
    [*] --> Frozen: from()/fromUtcNow()
    Frozen --> Frozen: now() (same moment)
    Frozen --> Shifted: advance()/rewind()/modify()/setTo()
    Shifted --> Shifted: now() (new fixed moment)

Confronto della funzionalità con gli analoghi

Aspetto🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Spostamenti espliciti in avanti e indietro✅❌❌❌❌❌
Modificatori stringa (+1 day)✅❌✅❌❌❌
Errore tipizzato su input non valido✅❌✅❌❌❌
Istantanea da un orologio qualsiasi (freeze())✅❌❌❌❌❌
Totale🏆 402000

← Torna all'elenco delle funzionalità


🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano