Я сегодня борюсь со следующей проблемой в течение дня или около того. Несмотря на то, что многие годы использовал AutoFixture, я не могу решить эту проблему.Впрыск недвижимости с автосферой
У меня есть абстрактный класс:
public abstract class AbstractClass
{
public IChildClass Child {get; set;}
};
IChildInterface:
public interface IChildClass
{
string Name {get; set;}
}
Реализация интерфейса:
public class ChildClass : IChildClass
{
public string Name {get; set;}
}
я тогда производный класс AbstractClass:
public class MyClass : AbstractClass
{
public MyClass()
{
Initialize();
}
private void Initialize()
{
var nameOfChild = Child.Name;
}
}
В моем единичном испытании на MyClass я следующее:
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var sut = fixture.Create<MyClass>();
Но получить NullReferenceException на Child.Name. Я пробовал использовать Register and Customize для IChildClass и AbstractClass, не повезло. Даже обычная реализация ISpecimenBuilder в этом случае не помогает.
Есть ли у кого-нибудь хорошая идея о том, как обойти это?
Если вы забыли о AutoFixture на какое-то время, как бы вы ожидали, что это сработает? –
Я бы выделил свойство IChildClass объекта AbstractClass с атрибутом Unity [Dependency] и ввел его. –
Вы пробовали просто переходить 'var sut = new MyClass();' и посмотреть, что происходит? –