我在定义哪两种类的测试加倍时遇到了一些麻烦。 它们都包含(基本)行为。
他们的不同之处在于,真实环境中的第一个不会运行,而第二个会运行(它基本上是一个无用的类,但它会工作!第二个会崩溃)。
他们对我来说都像Test Spies。它们都提供了一种获取Run()
方法是否被调用的方法。 (这就是这些课的原因!)。
我不能在所有上下文中使用第二个,因为我不能在所有上下文中仅使用第一个。
我可以将它们重构为一个,但也许在阅读代码时会使事情变得不那么清楚。
class FilterTestSpy : IFilter {
private bool hasBeenRan = false;
...
public bool HasBeenRan { get { return hasBeenRan; } }
public void Run() {
hasBeenRan = true;
}
}
class FilterTestSpy2: IFilter {
private bool hasBeenRan = false;
...
public bool HasBeenRan { get { return hasBeenRan; } }
public void Run() {
...some logic...
hasBeenRan = true;
}
}
我知道有一些嘲弄的框架,blablabla,这不是我在这里要求的。
谢谢!
答案 0 :(得分:1)
您是否可以在Run()
方法中创建委派的策略?这样你就可以只有一个间谍类,只有一个责任,即告诉方法是否被调用。因此,对于不同的上下文,您可以注入不同的策略。