AutoFixture的Without()方法在只有一个构造函数且所有参数都需要输入时无法正常使用?
创始人
2024-11-12 13:30:33
0

可以使用AutoFixture的Customize()方法,为该类型单独定制Fixture,从而解决该问题。具体代码示例如下:

public class TestClass { public string Name { get; set; } public int Age { get; set; }

public TestClass(string name, int age)
{
    Name = name;
    Age = age;
}

}

[TestMethod] public void TestCustomizedAutoFixture() { var fixture = new Fixture().Customize(new MultipleParameterConstructorCustomization()); var testClass = fixture.Create();

Assert.IsNull(testClass.Name);
Assert.AreEqual(0, testClass.Age);

}

public class MultipleParameterConstructorCustomization : ICustomization { public void Customize(IFixture fixture) { fixture.Customizations.Add(new MultipleParameterConstructorSpecimenBuilder()); } }

public class MultipleParameterConstructorSpecimenBuilder : ISpecimenBuilder { public object Create(object request, ISpecimenContext context) { var type = request as Type; if (type == null || type != typeof(T)) { return new NoSpecimen(); }

    var ctors = type.GetConstructors().Where(x => x.GetParameters().Count() > 1);
    if (!ctors.Any())
    {
        return new NoSpecimen();
    }

    return Activator.CreateInstance(type, ctors.First().GetParameters().Select(x => context.Resolve(x.ParameterType)).ToArray());
}

}

其中,MultipleParameterConstructorCustomization类为自定义类,用于定制fixture,重载ICustomization接口的Customize方法。MultipleParameterConstructorSpecimenBuilder类为自定义类,用于指定实例创建方式,重载ISpecimenBuilder接口的Create方法。对于只有一个构造函数但所有参数都需要输入的类型,可以通过这种方式自定义AutoFixture,来实现正常使用Without()和其他方法。

相关内容

热门资讯

玩家必看科普"hhp... 玩家必看科普"hhpoker辅助挂是真的吗"开挂(平台)辅助平台有挂规律-第三方教程1、下载安装好h...
透视苹果版"樱花之盛... 透视苹果版"樱花之盛辅助器下载"开挂(下载)辅助下载有挂秘笈-第三方教程;无需打开直接搜索薇:136...
我来教大家"潮汕暗宝... 您好:这款潮汕暗宝透视插件游戏是可以开挂的,确实是有挂的,很多玩家在这款潮汕暗宝透视插件游戏中打牌都...
实测发现"赣牌圈的好... 实测发现"赣牌圈的好牌几率"开挂(平台)辅助平台有挂讲解-必胜教程《详细加薇136704302咨询》...
透视工具"新西游大厅... 透视工具"新西游大厅辅助"开挂(平台)辅助平台有挂技术-微扑克教程>>您好:软件加薇13670430...
一分钟秒懂"wepo... 一分钟秒懂"wepoker代打辅助"开挂(插件)辅助插件详细教程-解密教程;无需打开直接搜索加薇13...
玩家必备科技"卡五星... >>您好:卡五星辅助器逍遥确实是有挂的,很多玩家在这款卡五星辅助器逍遥游戏中打牌都会发现很多用户的牌...
2分钟细说"闲逸辅助... 2分钟细说"闲逸辅助器"开挂(下载)辅助下载证实有挂-切实教程 【无需打开直接搜索加薇1367043...
一分钟了解"微信游戏... 一分钟了解"微信游戏锄大地辅助器"开挂(脚本)辅助脚本有挂解惑-透明挂教程;无需打开直接搜索薇:13...
透视肯定"潮友会鱼虾... 潮友会鱼虾蟹脚本辅助器 无需打开直接搜索微信:136704302本司针对手游进行,选择我们的四大理由...