... nicht zu wissen, ob 'mock' das richtige Wort ist.
Wie auch immer, ich habe eine geerbte Codebasis, für die ich einige Tests schreiben möchte, die zeitbasiert sind. Um nicht zu vage zu sein, bezieht sich der Code darauf, den Verlauf eines Elements zu betrachten und festzustellen, ob dieses Element jetzt einen Zeitschwellenwert hat.
Irgendwann muss ich auch testen, ob ich etwas zu diesem Verlauf hinzufüge und überprüfe, ob der Schwellenwert jetzt geändert wurde (und natürlich korrekt ist).
Das Problem, auf das ich stoße, ist, dass ein Teil des Codes, den ich teste, Aufrufe von time () verwendet. Daher fällt es mir wirklich schwer, genau zu wissen, wie hoch die Schwellenzeit sein sollte, basierend auf der Tatsache, dass ich ' Ich bin mir nicht ganz sicher, wann genau diese time () -Funktion aufgerufen wird.
Meine Frage lautet also im Grunde: Gibt es eine Möglichkeit für mich, den Aufruf von time () zu "überschreiben" oder die Zeit irgendwie zu "verspotten", sodass meine Tests in einer "bekannten Zeit" funktionieren?
Oder muss ich einfach akzeptieren, dass ich in dem Code, den ich teste, etwas tun muss, damit ich ihn bei Bedarf zwingen kann, eine bestimmte Zeit zu verwenden?
Gibt es in beiden Fällen gängige Vorgehensweisen für die Entwicklung zeitkritischer Funktionen, die testfreundlich sind?
Bearbeiten: Ein Teil meines Problems ist auch die Tatsache, dass die Zeit, zu der Dinge in der Geschichte auftraten, die Schwelle beeinflusst. Hier ist ein Beispiel für einen Teil meines Problems ...
Stellen Sie sich vor, Sie haben eine Banane und versuchen herauszufinden, wann sie gegessen werden muss. Nehmen wir an, dass es innerhalb von 3 Tagen abläuft, es sei denn, es wurde mit einer Chemikalie besprüht. In diesem Fall addieren wir 4 Tage zum Verfallsdatum ab dem Zeitpunkt , an dem das Spray angewendet wurde . Dann können wir weitere 3 Monate hinzufügen, indem wir es einfrieren. Wenn es jedoch gefroren ist, haben wir nur 1 Tag Zeit, um es nach dem Auftauen zu verwenden.
Alle diese Regeln werden von historischen Zeitpunkten bestimmt. Ich bin damit einverstanden, dass ich den Vorschlag des Dominik, innerhalb weniger Sekunden zu testen, nutzen kann, aber was ist mit meinen historischen Daten? Sollte ich das einfach im laufenden Betrieb "erstellen"?
Wie Sie vielleicht oder vielleicht nicht sagen können, versuche ich immer noch, all dieses 'Test'-Konzept in den Griff zu bekommen;)