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

相关内容

热门资讯

据悉开挂!青云阁辅助透视挂,大... 据悉开挂!青云阁辅助透视挂,大宝江苏麻将是有外挂,一直有挂教程1、不需要AI权限,帮助你快速的进行大...
新手必备辅助!麻辣竞技辅助透视... 新手必备辅助!麻辣竞技辅助透视挂,微乐四川麻将移动版确实有外挂,一贯有挂规律1、操作简单,无需四川麻...
揭秘关于透视挂!蜂娱棋牌2辅助... 揭秘关于透视挂!蜂娱棋牌2辅助透视挂,天天仙桃麻将真的是有外挂,本来有挂总结1、蜂娱棋牌2免费辅助多...
今日头条透视挂!电娱互动辅助透... 今日头条透视挂!电娱互动辅助透视挂,同城麻将存在有外挂,竟然有挂方式电娱互动透视方法中分为三种模型:...
盘点一款透视挂!长歌行辅助透视... 盘点一款透视挂!长歌行辅助透视挂,天天爱海南麻将真的有外挂,本来有挂详细一、长歌行游戏安装教程牌型概...
关于透视挂!捉住捣蛋鸡辅助透视... 关于透视挂!捉住捣蛋鸡辅助透视挂,海安麻将确实有外挂,切实有挂技术1、捉住捣蛋鸡有没有辅助教程、捉住...
据权威媒体报道开挂!微友约局辅... 据权威媒体报道开挂!微友约局辅助透视挂,闲趣竞技是真的有外挂,一直有挂方法1、让任何用户在无需微友约...
玩家必看教程开挂!微微娱乐辅助... 玩家必看教程开挂!微微娱乐辅助透视挂,途乐竞技是真的有外挂,其实有挂教学小薇(辅助器软件下载)致您一...
做出回应开挂!天赢棋牌辅助透视... 做出回应开挂!天赢棋牌辅助透视挂,梦幻麻将存在有外挂,果然揭秘有挂天赢棋牌脚本下载中分为三种模型:天...
发现一款透视挂!咸鱼辅助透视挂... 发现一款透视挂!咸鱼辅助透视挂,天天武宁麻将是有外挂,切实竟然有挂1、咸鱼辅助器安装包、咸鱼辅助器2...