By default AutoFixture creates DateTime structs in "local, unspecified time".
I have been trying to find a way to configure it to create DateTime structs with UTC kind, but so far unsuccessful.
Is there a way to do this?
You can use a Decorator for this (although easier solutions might also exist):
var fixture = new Fixture();
fixture.Customizations.Add(new UtcRandomDateTimeSequenceGenerator());
var dateTime = fixture.Create<DateTime>();
// -> The value of 'dateTime' is in Coordinated Universal Time (UTC).
The UtcRandomDateTimeSequenceGenerator
is defined as:
internal class UtcRandomDateTimeSequenceGenerator : ISpecimenBuilder
{
private readonly ISpecimenBuilder innerRandomDateTimeSequenceGenerator;
internal UtcRandomDateTimeSequenceGenerator()
{
this.innerRandomDateTimeSequenceGenerator =
new RandomDateTimeSequenceGenerator();
}
public object Create(object request, ISpecimenContext context)
{
var result =
this.innerRandomDateTimeSequenceGenerator.Create(request, context);
if (result is NoSpecimen)
return result;
return ((DateTime)result).ToUniversalTime();
}
}