Introduce new abstraction for providing current time to improve testability and make units more independent of environment system is run on.
public interface ITimeProvider
{
DateTime Now();
DateTime UtcNow();
}
Currently, ExecutorJob, RecurrentJobBuilder, and ParameterizedJobBuilder in "Horarium" use DateTime.UtcNow directly without any layer of indirection which makes unit tests depend on the time they were run.
Creating this abstraction will result in more deterministic tests.
Introduce new abstraction for providing current time to improve testability and make units more independent of environment system is run on.
Currently, ExecutorJob, RecurrentJobBuilder, and ParameterizedJobBuilder in "Horarium" use DateTime.UtcNow directly without any layer of indirection which makes unit tests depend on the time they were run.
Creating this abstraction will result in more deterministic tests.