AutoFixture中对延迟实例化的Lazy支持
创始人
2024-11-12 14:00:19
0

AutoFixture是一个.NET测试库,用于自动生成复杂对象的测试数据。有时候需要对Lazy类型进行测试,但是默认情况下AutoFixture不支持Lazy类型的延迟实例化机制。因此,需要进行如下的修改,来支持Lazy类型的延迟实例化。

首先,需要定义一个LazySpecimenBuilder类,继承自ISpecimenBuilder接口,用于自定义实例构建器。该类的实现如下所示:

public class LazySpecimenBuilder : ISpecimenBuilder
{
    public object Create(object request, ISpecimenContext context)
    {
        var t = request as Type;
        if (t == null || !t.IsGenericType || t.GetGenericTypeDefinition() != typeof(Lazy<>))
            return new NoSpecimen();

        var targetType = t.GetGenericArguments()[0];
        var instance = context.Resolve(targetType);
        var lazyType = typeof(Lazy<>).MakeGenericType(targetType);
        return Activator.CreateInstance(lazyType, instance);
    }
}

然后,需要将LazySpecimenBuilder注册到AutoFixture中。具体的方式是通过Fixture.Customizations.Add方法,如下所示:

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

这样,就可以通过AutoFixture进行Lazy类型的测试。例如:

var lazyString = fixture.Create>();
Console.WriteLine(lazyString.Value); // 输出生成的随机字符串

因为AutoFixture默认就支持对字符串类型的随机生成,所以这里可以直接通过Lazy类型来进行测试。

参考链接:https://github.com/AutoFixture/AutoFixture/issues/336

相关内容

热门资讯

第三分钟辅助!hhpoker免... 第三分钟辅助!hhpoker免费辅助器,aapoker辅助软件合法吗,烘培教程(有挂神器)一、aap...
第二分钟辅助!wepoker插... 第二分钟辅助!wepoker插件功能辅助器,wepoker私人局透视插件,妙招教程(有挂细节)1、金...
六分钟辅助!wepoker透视... 六分钟辅助!wepoker透视是真的吗,wpk俱乐部辅助器,阶段教程(发现有挂)1、wepoker透...
第四分钟辅助!wepoker有... 第四分钟辅助!wepoker有没有透视方法,wepoker有机器人吗,妙计教程(有挂攻略)1、用户打...
第3分钟辅助!hh poker... 第3分钟辅助!hh poker透视器下载,德普之星透视,技法教程(有挂功能)在进入hh poker透...
第1分钟辅助!wepoker数... 第1分钟辅助!wepoker数据分析,we-poker有人玩吗,法门教程(有挂助手)1、we-pok...
第一分钟辅助!wepoker破... 第一分钟辅助!wepoker破解器,菠萝辅助器免费版的特点,经验教程(有挂规律)1、玩家可以在菠萝辅...
5分钟辅助!约局吧德州真的有透... 5分钟辅助!约局吧德州真的有透视挂吗,we-poker软件,妙计教程(今日头条)约局吧德州真的有透视...
第九分钟辅助!wpk插件,hh... 第九分钟辅助!wpk插件,hh poker辅助有用吗,资料教程(确实有挂)1、首先打开hh poke...
第三分钟辅助!wepoker透... 第三分钟辅助!wepoker透视脚本苹果版,pokemmo辅助器,教程书教程(确实有挂)1、完成we...