Unit testing ‐ DateTime.Now - Habilya/LearningCourseNotes GitHub Wiki

IDateTimeProvider.cs

using System;

namespace WatcherFileSystemCommon.Providers;

public interface IDateTimeProvider
{
	DateTime DateTimeNow { get; }
}

DateTimeProvider.cs

using System;

namespace WatcherFileSystemCommon.Providers;

public class DateTimeProvider : IDateTimeProvider
{
	public DateTime DateTimeNow => DateTime.Now;
}

In the IOC container

services.AddSingleton<IDateTimeProvider, DateTimeProvider>();

Now you can do this in unit tests

var _dateTimeProvider = Substitute.For<IDateTimeProvider>();

_dateTimeProvider.DateTimeNow.Returns(Constants.DEFAULT_MOCKED_DATE_TIME);