在我遇到的问题上我需要一些帮助。
我创建了一个单元测试,我正在尝试测试一个具有使用成员函数功能的方法的类。问题是成员资格使用我的Web项目文件(Web.config)中的设置,例如connectString和其他。
有没有办法配置我的单元测试以从我的Web项目中的Web.config读取特定内容?我正在使用VS2017。
提前感谢。
答案 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读取,并且您的单元测试项目需要模拟接口。