Shim使用默认方法实现

时间:2015-01-13 13:18:11

标签: c# unit-testing nunit microsoft-fakes shim

我能以某种方式从 shim 内部调用默认方法吗?

我试过了,但它没有用。

ShimConfigurationHelper.GetConfigValueString = (key) {
    switch (key)
    {                       
        case "SpecialKey":
            return "some-value-for-testing";

        default:
            return ConfigurationHelper.GetConfigValue(key);
    }
};

1 个答案:

答案 0 :(得分:0)

您可以标记要执行的代码部分,就像它们在ShimContext之外一样,这样它们就可以使用原始实现。这样做的一种方法是将代码从调用ShimContext.ExecuteWithoutShims中包含在委托中。这样做,您的代码可能看起来像这样::

ShimConfigurationHelper.GetConfigValueString = (key) {
    var response=String.Empty;
    switch (key)
    {                       
        case "SpecialKey":
            response = "some-value-for-testing";
            break;

        default:
            ShimsContext.ExecuteWithoutShims(() => {
                response = ConfigurationHelper.GetConfigValue(key);
            });
            break;
    }
    return response;
};