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

相关内容

热门资讯

黑科技肯定(aapoker辅助... 黑科技肯定(aapoker辅助使用教程)太嚣张了好像是真的有挂(透视)揭秘攻略(2026已更新)(哔...
黑科技能赢(德州之星app有外... 一、德州之星app有外挂吗简介了解软件请加微:136704302德州之星app有外挂吗是一款在线扑克...
黑科技教学(wepoke苹果下... 1、黑科技教学(wepoke苹果下载网址)太嚣张了从前有挂(透视)必赢教程(2021已更新)(哔哩哔...
黑科技教程(智星菠萝德州辅助工... 黑科技教程(智星菠萝德州辅助工具)太坑了都是真的是有挂(透视)细节揭秘(2021已更新)(哔哩哔哩)...
黑科技教程(微扑克职业代打)太... 黑科技教程(微扑克职业代打)太嚣张了原来真的有挂(透视)插件教程(2024已更新)(哔哩哔哩)1、用...
辅助黑科技(微扑克ai算牌器)... 辅助黑科技(微扑克ai算牌器)太夸张了原生有挂(透视)第三方教程(2020已更新)(哔哩哔哩)1、不...
黑科技ai代打(德州之星模拟器... 黑科技ai代打(德州之星模拟器)太夸张了竟然是真的有挂(透视)玩家教你(2026已更新)(哔哩哔哩)...
黑科技科技(wepokewep... 一、wepokewepoke透视挂怎么测试简介了解软件请加微:136704302wepokewepo...
黑科技ai代打(aa扑克辅助)... 黑科技ai代打(aa扑克辅助)太离谱了切实是有挂(透视)2025教程(2020已更新)(哔哩哔哩)1...
黑科技计算(wpk ai辅助)... 您好,wpk ai辅助这款游戏可以开挂的,确实是有挂的,需要了解加威信【136704302】很多玩家...