Как и в AutoFixture 4.8.0, есть ли лучшая альтернатива использованию Fixture.Register
для регистрации функции для создания типа, который предоставляет только конструктор internal
?
В контексте:
Я работаю над стандартной библиотекой классов .net для создания API для внутреннего использования.Мы не хотим показывать открытые конструкторы, и поэтому все конструкторы для этих моделей internal
.Свойства дополнительно public readonly
.Эти классы будут созданы с помощью десериализации Json, и в этой конкретной библиотеке есть модель с> 20 свойствами для рассмотрения.В качестве бонуса мы хотели бы использовать [AutoDataAttribute], где это возможно.
т.е.Есть ли альтернатива снабжению внутреннего jsonconstructor смесью не сложных и сложных типов (также внутренних) с более чем 20 аргументами, используя AutoFixture?
[TestFixture]
public sealed class Tests
{
private Fixture _fixture;
[OneTimeSetUp]
public void OneTimeSetup()
{
_fixture = new Fixture();
_fixture.Register(() => new Vehicle(_fixture.Create<string>(), _fixture.Create<int>()));
_fixture.Register(
() => new Driver(_fixture.Create<string>(), _fixture.Create<int>(), _fixture.Create<Vehicle>()));
}
[Test]
public void CanCreateDriverWithVehicle()
{
Func<Driver> func = () => _fixture.Create<Driver>();
func.Should().NotThrow(); // Green
}
}
[PublicAPI]
public sealed class Driver
{
public readonly string Name;
public readonly int Age;
public Vehicle Vehicle;
[JsonConstructor]
internal Driver(string name, int age, Vehicle vehicle)
{
Name = name;
Age = age;
Vehicle = vehicle;
}
}
[PublicAPI]
public sealed class Vehicle
{
public readonly string Manufacturer;
public readonly int Miles;
[JsonConstructor]
internal Vehicle(string manufacturer, int miles)
{
Manufacturer = manufacturer;
Miles = miles;
}
}