默认情况下,AutoFixture在“本地未指定时间”中创建DateTime结构。

我一直在尝试找到一种方法来配置它以创建具有UTC类型的DateTime结构,但是到目前为止没有成功。

有没有办法做到这一点?

最佳答案

您可以为此使用Decorator(尽管也可能存在更简单的解决方案):

var fixture = new Fixture();
fixture.Customizations.Add(new UtcRandomDateTimeSequenceGenerator());

var dateTime = fixture.Create<DateTime>();
// -> The value of 'dateTime' is in Coordinated Universal Time (UTC).
UtcRandomDateTimeSequenceGenerator定义为:
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();
    }
}

关于autofixture - 让AutoFixture在UTC中创建DateTime吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22686907/

10-12 06:49