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

相关内容

热门资讯

连日来!德扑之心免费透视(透视... 连日来!德扑之心免费透视(透视)微乐家乡自建房辅助app(果然存在有辅助修改器)-哔哩哔哩1、这是跨...
据统计!impoker辅助(透... 据统计!impoker辅助(透视)新上游通用挂是真的吗(确实是有辅助神器)-哔哩哔哩1、用户打开应用...
透视免费!cloudpoker... 透视免费!cloudpoker怎么开挂(透视)潮汕木虱辅助下载(果然是有辅助app)-哔哩哔哩在进入...
透视ai!wpk俱乐部是做什么... 透视ai!wpk俱乐部是做什么的(透视)手机游戏辅助脚本工具(竟然真的是有辅助软件)-哔哩哔哩手机游...
透视智能ai!wepoker轻... 透视智能ai!wepoker轻量版透视系统(透视)游戏辅助器免费版(好像真的有辅助工具)-哔哩哔哩该...
透视免费!wepoker公共底... 透视免费!wepoker公共底牌(透视)钱塘十三水其实真的有挂(竟然是真的辅助神器)-哔哩哔哩1、钱...
经调查!wepoker游戏下载... 经调查!wepoker游戏下载(透视)免费广东雀神智能插件安装(果然真的有辅助插件)-哔哩哔哩1、操...
昨日!wpk作必弊是真的吗(透... 昨日!wpk作必弊是真的吗(透视)上饶打炸攻略(切实是真的辅助下载)-哔哩哔哩1、这是跨平台的上饶打...
辅助透视!智星菠萝可以辅助吗(... 辅助透视!智星菠萝可以辅助吗(透视)九九联盟后台可以操作吗(本来存在有辅助工具)-哔哩哔哩1、首先打...
透视游戏!扑克之星辅助(透视)... 透视游戏!扑克之星辅助(透视)微信十三张脚本(一直是有辅助修改器)-哔哩哔哩微信十三张脚本辅助器是一...