Tinkoff / Horarium

Horarium is the .Net library to manage background jobs
Apache License 2.0
56 stars 12 forks source link

Avoid direct use of DateTime.Now or DateTime.UtcNow #48

Open asylkhan-azat opened 2 years ago

asylkhan-azat commented 2 years ago

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.