Maxim Mironjuk
-
Januar 11, 2025
In fast jeder Anwendung gibt es Logik, die von der aktuellen Zeit abhängt: Ablaufdaten von Gutscheinen, Fristen für Bestellstornierungen, oder zeitgesteuerte Freischaltungen. Wird diese Zeit über ein direktes new \DateTime() im Code abgefragt, wird jeder Test, der einen bestimmten Zeitpunkt simulieren muss, entweder zu einer fragilen Konstruktion mit echten Sleep-Aufrufen oder schlicht unmöglich zu schreiben. Die Symfony Clock-Component löst dieses Problem, indem sie die aktuelle Zeit als injizierbare Abhängigkeit behandelt, die sich in Tests durch eine deterministische Implementierung ersetzen lässt, ohne eine einzige Millisekunde echter Wartezeit.