2013-04-17 125 views
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 
} 
+1

的awnser取決於你想要什麼測試並使用GetGoogleAnalyticsTag()方法。如果沒有實施,很難讓你的問題更加突出。 – Peter

+0

如果您想成爲Benjamin,請更新您的個人資料,而不是將這些信息放入您的問題中。 –

回答

0

有被稱爲「子類 - 測試」,如果你需要訪問的方法或行爲(如模擬引發事件),這意味着你將手模式 - 滾動一個存根/模擬來展示測試所需的功能。該存根僅存在於您的測試項目中。

,如果你只是在測試抽象類的保護變量感興趣,只需創建一個派生類並公開執行工作,並返回你所感興趣的值的方法。