【问题标题】:Stubs access to the protected variables存根访问受保护的变量
【发布时间】:2013-04-09 20:26:15
【问题描述】:

我需要测试这个类:

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
}

【问题讨论】:

  • 遮阳篷取决于您要测试的内容以及 GetGoogleAnalyticsTag() 方法的工作方式。如果没有实施,真的很难回答您的问题。
  • 如果您想被称为 Benjamin/被称为 Benjamin,请更新您的个人资料,而不是将该信息放在您的问题中。

标签: .net unit-testing protected moles stubs


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-10-27
    • 1970-01-01
    • 2023-04-09
    • 2014-05-14
    • 2014-12-06
    • 2017-01-12
    • 2018-07-16
    • 2011-03-29
    相关资源
    最近更新 更多