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

相关内容

热门资讯

有消息称!来物局潮汕辅助,aa... 有消息称!来物局潮汕辅助,aapoker怎么设置提高好牌几率,步骤教程(有人有挂)-哔哩哔哩aapo...
透视了解!德普之星透视辅助软件... 透视了解!德普之星透视辅助软件下载,德普软件(透视)本来是有挂(有挂秘籍)-哔哩哔哩1、用户打开应用...
网友热议!心动休闲辅助,新二号... 网友热议!心动休闲辅助,新二号辅助软件多少钱,绝活教程(有挂辅助)-哔哩哔哩;1、在新二号辅助软件多...
透视私人局!德普之星的辅助工具... 透视私人局!德普之星的辅助工具介绍,德普之星app安卓版破解版(透视)竟然是真的挂(有挂秘籍)-哔哩...
近日!樱花之盛辅助,wepok... 近日!樱花之盛辅助,wepoker安装教程,妙招教程(真的有挂)-哔哩哔哩;1、完成wepoker安...
透视规律!德普之星透视辅助插件... 透视规律!德普之星透视辅助插件,德普之星透视软件免费入口官网(透视)确实有挂(有挂教程)-哔哩哔哩小...
无独有偶!途游四川小程序规律,... 无独有偶!途游四川小程序规律,pokemmo手机版透视脚本,学习教程(新版有挂)-哔哩哔哩1、许多玩...
透视最新!德普之星透视辅助软件... 透视最新!德普之星透视辅助软件下载,德普辅助器怎么用(透视)原来是真的挂(竟然有挂)-哔哩哔哩1、游...
这一现象值得深思!八闽辅助,H... 这一现象值得深思!八闽辅助,HH平台挂,阶段教程(新版有挂)-哔哩哔哩一、八闽辅助可以开透视的定义与...
透视计算!德普之星的辅助工具介... 透视计算!德普之星的辅助工具介绍,德普之星有辅助软件吗(透视)好像是真的挂(有挂秘诀)-哔哩哔哩1、...