存根访问受保护的变量

时间:2013-04-17 07:15:53

标签: .net unit-testing protected moles stubs

我需要测试这个课程:

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
}

1 个答案:

答案 0 :(得分:0)

有一种称为“Subclass-to-Test”的模式,它表明如果您需要访问方法或行为(例如模拟引发事件),您可以手动滚动存根/模拟,从而公开您需要的功能。测试。此存根仅存在于您的测试项目中。

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