使用AutoFixture进行属性注入

时间:2013-09-13 08:06:35

标签: autofixture

我已经和以下问题争吵了一天左右。尽管多年来一直使用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的自定义实现,在这种情况下也无济于事。

有没有人对如何解决这个问题有个好主意?

1 个答案:

答案 0 :(得分:1)

以上代码永远不会起作用,因为在Ctor中调用了 Initialize 。自动混合正在初始化对象,并且尚未注入属性。上面有几种解决方法但是它在......初始化方法中 Child 总是为空。

相关问题