我必须使用specific constructor进行自动夹具定制。 应用程序逻辑需要通过构造函数更改温度单位。否则温度值将被转换,我无法确定最低温度。是否可以修改使用的构造函数参数?
这对我来说似乎是一个解决方法:
var tempUnit = new Fixture().Create<TemperatureUnit>();
var temperatureFixture = new Fixture();
//...
temperatureFixture.Customizations.Add(new RandomNumericSequenceGenerator(Convert.ToInt64(GetMinTemperatureForUnit(tempUnit)), long.MaxValue));
//workaround to force autofixture to create weather with unit
weatherFixture.Register<TemperatureUnit>(() => tempUnit);
weatherFixture.Customize<Weather>(weather => weather.FromFactory(new MethodInvoker(new GreedyConstructorQuery()))
.With(x => x.Temperature, temperatureFixture.Create<double>())
.Without(x => x.TempUnit)