我已经和以下问题争吵了一天左右。尽管多年来一直使用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>();
但是在Child.Name上获取NullReferenceException。我已经尝试过为IChildClass和AbstractClass使用Register和Customize,没有运气。即使是ISpecimenBuilder的自定义实现,在这种情况下也无济于事。
有没有人对如何解决这个问题有个好主意?
答案 0 :(得分:1)
以上代码永远不会起作用,因为在Ctor中调用了 Initialize 。自动混合正在初始化对象,并且尚未注入属性。上面有几种解决方法但是它在......初始化方法中 Child 总是为空。