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

标签 c# unit-testing configuration app-config

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

我想为实现和接口(interface)的配置创建一个包装类,使用这种方法可以模拟接口(interface)并返回模拟值。

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; }
    }
}

关于c# - 如何模拟 C# 应用程序的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36311455/

相关文章:

c# - 调用服务电话的良好做法

java - 如何处理外部类型?

Symfony 2.1 Doctrine 过滤器(启用/禁用)

xml - 如何在 jar 之外导入 spring xml

javascript - 用Meteor JS写命令行工具?

javascript - Web api 路由不起作用

c# - 在后台线程上 c# 中出现未经授权的错误

c# - 密封类和单例

swift - 测试时未找到 Google/Analytics.h 文件

ios - OCMock:返回与通过参数获取相同的值