如何模拟 C# 应用程序的配置

How to mock configuration for C# application

我写了一个 C# 应用程序,想模拟配置值。 例如,我在远程机器上配置了一个文件创建路径,测试时想在本地创建。

我想为实现和接口的配置创建一个包装器 class,使用这种方法可以模拟接口和 return 模拟值。

public interface IConfigurationProvider
{
   string GetFileOutputPath(string path);
}

public class ConfigurationWrapper : IConfigurationProvider
{
    return ConfigurationManager.AppSettings.Get("FileOutputPath");
}

配置:

<configuration>
    <appSettings>
        <add key="FileOutputPath" value="RemoteServerPath" />
    </appSettings>
</configuration>

这种方法确实有效,但它是这种情况下的最佳做法吗?

至于最佳实践,那将是一个见仁见智的问题。在干净、可测试、可维护的代码方面,该方法是常用的。

这是您方法的一种变体。 (基本上提供相同的功能)

using System.Configuration;

public interface IApplicationSettings {
    string this[string setting] { get; }
}

public class ConfigAppSettings : IApplicationSettings {
    public string this[string setting] {
        get { return ConfigurationManager.AppSettings[setting]; }
    }
}

public interface IConnectionStrings {
    string this[string name] { get; }
}

public class ConfigConnectionStrings : IConnectionStrings {
    public string this[string name] {
        get { return ConfigurationManager.ConnectionStrings[name].ConnectionString; }
    }
}