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

相关内容

热门资讯

外挂烘培!newpoker怎么... 外挂烘培!newpoker怎么安装脚本,sohoopoker辅助-确实真的是有辅助插件(哔哩哔哩)1...
外挂法门!wepoker透视有... 外挂法门!wepoker透视有吗,拱趴大菠萝自动计算机器人-切实是有辅助教程(哔哩哔哩)该软件可以轻...
外挂诀窍!聚星ai辅助工具激活... 外挂诀窍!聚星ai辅助工具激活码,德普之星辅助器怎么用-果然有辅助插件(哔哩哔哩)1、点击下载安装,...
外挂攻略!poker worl... 外挂攻略!poker world辅助,德州透视脚本-原来是有辅助工具(哔哩哔哩)1、许多玩家不知道德...
外挂指引!佛手在线有挂吗,菠萝... 外挂指引!佛手在线有挂吗,菠萝德州透视脚本-切实有辅助工具(哔哩哔哩)暗藏猫腻,小编详细说明菠萝德州...
外挂策略!菠萝辅助器免费版的特... 外挂策略!菠萝辅助器免费版的特点,poker world辅助-其实真的有辅助技巧(哔哩哔哩)该软件可...
外挂讲义!德州透视是真的吗,约... 外挂讲义!德州透视是真的吗,约局吧德州有挂吗-总是是真的有辅助app(哔哩哔哩)亲,关键说明,德州透...
外挂诀窍!werplan外开挂... 外挂诀窍!werplan外开挂,pokernow辅助控制-本来是有辅助工具(哔哩哔哩);1、上手简单...
外挂演示!werplan怎么作... 外挂演示!werplan怎么作必弊,德州机器人代打脚本-总是一直都是有辅助插件(哔哩哔哩)1、在德州...
外挂经验!约局吧作必弊脚本,来... 外挂经验!约局吧作必弊脚本,来玩app破解-一贯存在有辅助app(哔哩哔哩)约局吧作必弊脚本破解侠是...