Member-only story

Bending DateTime in .NET to Test Your Code Better

Mocking DateTime in .NET is painful, here’s a way to make it hurt less.

Stephen Walsh
3 min readJan 19, 2022

Okay I’ll dial down the hyperbole, over my years (read I’m feeling old) as an engineer I have run into a problem where my code has contained a DateTime.Now or DateTime.UtcNow. When I write a test, I can't validate the actual time because milliseconds have passed between the code running and validating.

It's not a huge problem but annoying as I like to validate everything to make sure I'm not accidentally manipulating those values somewhere else.

There is an easy solution to this, and before I detail the solution that I used, I need to call out the inspirations for this. Thanks to Andrew Harcourt, Andrew Wickens and Jared Wilton for giving me that extra push.

The TL;DR; is that you can consume my SimpleDateTimeProvider NuGet package to help you solve this. The implementation of the code for this lies below.

The Solution

I have created a DateTimeProvider consisting of an interface, and two implementations of the interface. One implementation returns the System values and the other returns Mocked values that are preset by the user.

The Interface

Create an account to read the full story.

The author made this story available to Medium members only.
If you’re new to Medium, create a new account to read this story on us.

Or, continue in mobile web

Already have an account? Sign in

Stephen Walsh
Stephen Walsh

Written by Stephen Walsh

Hello! I’m a Husband, Father, Software Engineer, Learner & Leader. I live in Wisconsin, and spend my days trying to balance all of the above.

Responses (1)

What are your thoughts?