我在定义将这两个类加倍进行哪种类型的测试时遇到了麻烦。
它们都包含(基本)行为。

他们的区别是,第一个在真实上下文中不会运行,而第二个将运行(基本上是什么都不做的类,但是它会起作用!第二个会崩溃)。

在我看来,它们都像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;
    }
}


我知道这里有嘲笑框架,这不是我要问的。

谢谢!

最佳答案

您可以在Run()方法中创建要委派的策略吗?这样一来,您将只能拥有一个间谍类,并且只需承担一个责任,即告诉该方法是否被调用。因此,对于不同的上下文,您可以注入不同的策略。

09-30 21:25