在单元测试中使用Web.config文件

时间:2018-02-22 04:48:29

标签: c# asp.net-mvc web-config visual-studio-2017 vs-unit-testing-framework

在我遇到的问题上我需要一些帮助。

我创建了一个单元测试,我正在尝试测试一个具有使用成员函数功能的方法的类。问题是成员资格使用我的Web项目文件(Web.config)中的设置,例如connectString和其他。

有没有办法配置我的单元测试以从我的Web项目中的Web.config读取特定内容?我正在使用VS2017。

提前感谢。

1 个答案:

答案 0 :(得分:2)

可能的解决方案之一(我更喜欢)是创建一个公共接口来充当配置提供程序,并在类中实现如下:

注意:在单独的程序集中创建此接口和类,可以在Web应用程序和单元测试项目中使用。

public interface IConfigurationProvider
{
    string GetValue(string key, string valueIfNull = "");
}

using System.Configuration;
public class ConfigurationProvider : IConfigurationProvider
{
    public string GetValue(string key, string valueIfNull = "")
    {
        return (!String.IsNullOrEmpty(ConfigurationManager.AppSettings[key]) 
            ? ConfigurationManager.AppSettings[key] 
            : valueIfNull);
    }
}

在Web应用程序中使用ConfigurationProvider类的实例(使用DI)。而在您的单元测试项目中,您需要模拟" IConfigurationProvider"输入并调用" GetValue"返回特定键的首选项值的方法。

这意味着,您的Web应用程序需要使用此提供程序读取配置值,而不是直接从ConfigurationManager读取,并且您的单元测试项目需要模拟接口。