| ▲ | WorldMaker 7 hours ago | |||||||
Similarly, I like .NET's TimeProvider abstraction [1]. You pass a TimeProvider to your functions. At runtime you can provide the default TimeProvider.System. When testing FakeTimeProvider has a lot of handy tools to do deterministic testing. One of the further benefits of .NET's TimeProvider is that it can also be provided to low level async methods like `await Task.Delay(time, timeProvider, cancellationToken)` which also increases the testability of general asynchronous code in a deterministic sandbox once you learn to pass TimeProvider to even low level calls that take an optional one. [1] https://learn.microsoft.com/en-us/dotnet/standard/datetime/t... | ||||||||
| ▲ | rzzzt 4 hours ago | parent [-] | |||||||
Java has an interface named InstantSource for this purpose: https://docs.oracle.com/en/java/javase/17/docs/api/java.base... | ||||||||
| ||||||||