如何测试在构造函数上设置其属性的类?

时间:2015-12-29 01:02:30

标签: unit-testing design-patterns

我有很多类实现了一些接口,我构建了一些类#34;坐标"用法。因此,我创建了一个包含业务流程的基类,并为我需要的这些接口实现的每个组合构建了一个类。像这样:

public abstract class BaseDirector
{
   public IInterfaceA A { get; set; }
   public IInterfaceB B { get; set; }

   public virtual void Do()
   {
      A.Do();
      B.Do();
   }
}

public class Director1: BaseDirector
{
   public Director1()
   {
      A = new A1();
      B = new B2();
   }
}

public class Director2: BaseDirector
{
   public Director2()
   {
      A = new A2();
      B = new B12();
   }
}

它闻起来很糟糕,我不知道如何测试它。有人可以就如何测试这个给出一些指示吗?我是否需要改变"导演"类?

1 个答案:

答案 0 :(得分:1)

你让每个实现都有支持依赖注入的构造函数(传入值而不是在内部创建它们)我不是100%肯定在c#中,但我认为你可以通过创建一个类似的构造函数来要求这样的构造函数基类。但无论哪种方式,你都可以“手动”制作无操作和D.I.每个impl的构造函数。

public class Director1: BaseDirector
{
   public Director1()
   {
      A = new A1();
      B = new B2();
   }
   public Director1(A a, B b) // Make a constructor that handles "dependency injection"
   {
      A = a;
      B = b;
   }
}

public class Director2: BaseDirector
{
   public Director2()
   {
      A = new A2();
      B = new B12();
   }
   public Director2(A a, B b) // Make a constructor that handles "dependency injection"
   {
      A = a;
      B = b;
   }
}

这允许您为测试目的“注入”您想要的值。