存根访问受保护的变量

问题描述:

我需要测试这个类:存根访问受保护的变量

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

的awnser取决于你想要什么测试并使用GetGoogleAnalyticsTag()方法。如果没有实施,很难让你的问题更加突出。 – Peter

+0

如果您想成为Benjamin,请更新您的个人资料,而不是将这些信息放入您的问题中。 –

有被称为“子类 - 测试”,如果你需要访问的方法或行为(如模拟引发事件),这意味着你将手模式 - 滚动一个存根/模拟来展示测试所需的功能。该存根仅存在于您的测试项目中。

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