我正在通过摆弄现有项目来尝试使用 IoC 来实现 TDD。简而言之,我的问题是:当对公共和非公共方法感兴趣时,围绕 IoC 的最佳实践是什么?
有两个类:
public abstract class ThisThingBase
{
public virtual void Method1() {}
public virtual void Method2() {}
public ThatThing GetThat()
{
return new ThatThing(this);
}
internal virtual void Method3() {}
internal virtual void Method4() {}
}
public class Thathing
{
public ThatThing(ThisThingBase thing)
{
m_thing = thing;
}
...
}
ThatThing 使用它的 ThisThingBase 引用来调用经常被 ThisThingBase 的后代重载的方法。
Method1 和 Method2 是公开的。Method3 和 Method4 是内部的,仅由 ThatThings 使用。
我想在没有 ThisThing 的情况下测试 ThatThing,反之亦然。
学习 IoC 我的第一个想法是我应该定义一个 IThing 接口,通过 ThisThingBase 实现它并将它传递给 ThatThing 构造函数。IThing 将是客户端可以调用的公共接口,但它不包括 ThatThing 也需要的 Method3 或 Method4。
我是否应该为这两种方法定义第二个接口 - IThingInternal 并将两个接口都传递给 ThatThing?