0

我需要测试这个类:

public abstract class GaBase
{
    protected GoogleAnalyticsInfo GAInfo;

    protected abstract void PopulateGAInfo();

    public string GetGoogleAnalyticsTag()
    {
        //Return any info related to GAInfo
    }

    //Some other stuffs
}

我需要对该方法进行单元测试GetGoogleAnalyticsTag,但我需要设置属性GAInfo以正确测试它。PopulateGaInfo在生产代码中,当我们从此类派生时,我们使用我的方法来执行此操作。

如何GAInfo使用存根进行设置?

这是我的测试方法:

public void MyTest1()
{          
    var ga =  new StubGaBase()
        {
            PopulateGAInfo01 = () =>
                {
                    // How can I set GAInfo here?
                }
        };

    // The method I need to test
    var script = ga.GetGoogleAnalyticsTag();

    // My asserts
}
4

1 回答 1

0

有一种称为“子类到测试”的模式,它建议如果您需要访问方法或行为(例如模拟引发事件),您将手动滚动一个存根/模拟,以公开测试所需的功能。此存根仅存在于您的测试项目中。

如果您只对测试抽象类的受保护变量感兴趣,只需创建一个派生类并公开一个执行工作并返回您感兴趣的值的方法。

于 2013-04-18T11:57:51.683 回答