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()和其他方法。

相关内容

热门资讯

解密透视!wepoker底牌透... 解密透视!wepoker底牌透视,wpk私人局有透视吗,窍要教程(有人有挂)-哔哩哔哩wpk私人局有...
开挂透视!哈糖大菠萝辅助器!切... 开挂透视!哈糖大菠萝辅助器!切实存在有辅助方法(真的有挂)-哔哩哔哩1、不需要AI权限,帮助你快速的...
解谜透视!wepoker有机器... 解谜透视!wepoker有机器人吗,wepoker数据分析工具,积累教程(揭秘有挂)-哔哩哔哩暗藏猫...
教你透视!约局吧德州真的有透视... 教你透视!约局吧德州真的有透视挂吗!真是一直总是有辅助神器(确实有挂)-哔哩哔哩约局吧德州真的有透视...
详细透视!hhpoker破解工... 详细透视!hhpoker破解工具,wepoker俱乐部辅助器,烘培教程(有挂细节)-哔哩哔哩1、很好...
分享透视!悦扑克脚本!切实真的... 分享透视!悦扑克脚本!切实真的是有辅助软件(有挂秘笈)-哔哩哔哩所有人都在同一条线上,像星星一样排成...
专业透视!wepoker作必弊... 专业透视!wepoker作必弊视频,约局吧开挂,讲义教程(有挂工具)-哔哩哔哩该软件可以轻松地帮助玩...
科普透视!佛手大菠萝有挂吗!果... 科普透视!佛手大菠萝有挂吗!果然是真的有辅助方法(有挂规律)-哔哩哔哩1、佛手大菠萝有挂吗免费辅助多...
关于透视!wepoker的辅助... 关于透视!wepoker的辅助器,sohoo poker辅助器,妙招教程(有挂教学)-哔哩哔哩1、上...
有挂透视!扑克之星辅助!确实真... 有挂透视!扑克之星辅助!确实真的是有辅助app(有挂细节)-哔哩哔哩1、超多福利:超高返利,海量正版...