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

相关内容

热门资讯

9分钟开挂!人海大厅挂什么好,... 9分钟开挂!人海大厅挂什么好,小闲川南宜宾辅助(透视黑科技开挂辅助工具) 【无需打开直接搜索加薇13...
4分钟辅助!掌中乐游戏中心辅助... 4分钟辅助!掌中乐游戏中心辅助器,新八戒怎么控制牌型(透视透视开挂辅助安装)相信很多朋友都在电脑上玩...
9分钟辅助!潮友软件辅助开挂,... 潮友软件辅助开挂是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微...
第7分钟辅助!xpoker辅助... 【福星临门,好运相随】;第7分钟辅助!xpoker辅助,闲闲辅助器(我来教大家开挂辅助工具);暗藏猫...
六分钟透视!家乡大二辅助,ep... 六分钟透视!家乡大二辅助,epoker透视(透视代打开挂辅助下载) 了解更多开挂安装加(136704...
第9分钟辅助!新二号辅助软件多... 第9分钟辅助!新二号辅助软件多少钱,湖北逍遥辅助器(透视安装开挂辅助安装);新二号辅助软件多少软件透...
第三分钟开挂!杭州边锋辅助软件... 第三分钟开挂!杭州边锋辅助软件,友友联盟有辅助吗(实测揭晓开挂辅助脚本)【无需打开直接搜索加薇136...
5分钟辅助!新海贝之城脚本,陕... 5分钟辅助!新海贝之城脚本,陕西三带辅助(技术分享开挂辅助插件);超受欢迎的陕西三带辅助稳赢小游戏,...
3分钟开挂!决胜麻架胡易辅助,... 3分钟开挂!决胜麻架胡易辅助,欢聚水鱼神器(实测交流开挂辅助软件)您好:决胜麻架胡易辅助这款游戏可以...
第2分钟辅助!闲聚辅助器,哥哥... 第2分钟辅助!闲聚辅助器,哥哥打大a微信小程序作弊(实测交流开挂辅助安装);1、这是跨平台的哥哥打大...