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

相关内容

热门资讯

近期!开心茶苑13道辅助(辅助... 近期!开心茶苑13道辅助(辅助)原来有挂辅助修改器(有挂分享)-哔哩哔哩开心茶苑13道辅助是不是有人...
透视攻略!佛手在线大菠萝智能辅... 透视攻略!佛手在线大菠萝智能辅助器,牵手游戏辅助,步骤辅助app(有挂存在)-哔哩哔哩1、佛手在线大...
这一现象值得深思!老友汇辅助(... 这一现象值得深思!老友汇辅助(辅助)切实有挂辅助下载(有挂秘籍)-哔哩哔哩1、打开软件启动之后找到中...
透视免费!aa poker辅助... 透视免费!aa poker辅助,赣湘互娱辅助,法门辅助脚本(讲解有挂)-哔哩哔哩赣湘互娱辅助辅助器是...
据公告内容!兄弟13水修改器(... 据公告内容!兄弟13水修改器(辅助)原来是真的辅助器(有挂细节)-哔哩哔哩1.兄弟13水修改器 选牌...
随着!线上德州的辅助器是什么,... 随着!线上德州的辅助器是什么,广西老友玩游戏辅助器,方针辅助工具(确实有挂)-哔哩哔哩1、用户打开应...
日前!吉安中至小程序(辅助)真... 日前!吉安中至小程序(辅助)真是真的有辅助下载(有挂教学)-哔哩哔哩1、许多玩家不知道吉安中至小程序...
昨日!哈糖大菠萝有挂吗,河洛缸... 昨日!哈糖大菠萝有挂吗,河洛缸次辅助器,方案辅助软件(有挂方针)-哔哩哔哩1、让任何用户在无需哈糖大...
据统计!新天道透视辅助(辅助)... 您好,新天道透视辅助这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很多玩家...
黑科技辅助挂!德州局脚本,来趣... 黑科技辅助挂!德州局脚本,来趣广西辅助,总结辅助app(有挂秘诀)-哔哩哔哩1、这是跨平台的来趣广西...