C# 使用moq在Web.conf中模拟设置
我正在MVC3应用程序中使用C# 使用moq在Web.conf中模拟设置,c#,asp.net-mvc-3,unit-testing,moq,C#,Asp.net Mvc 3,Unit Testing,Moq,我正在MVC3应用程序中使用VisualStudio.TestTools进行单元测试。文件/Web.conf包含一个自定义配置,其值为“false”我无法通过ConfigurationManager.AppSettings[“disablecheckbox”]进入控制器: 这在生产测试中效果很好,但在单元测试中效果不佳。该值为“null”: 如何使用框架Moq模拟/Web.conf中的设置?如果您将配置文件读取抽象化,并将此抽象注入到类中,而不是直接使用ConfigurationManage
VisualStudio.TestTools
进行单元测试。文件/Web.conf
包含一个自定义配置,其值为“false”
我无法通过ConfigurationManager.AppSettings[“disablecheckbox”]进入控制器代码>:
这在生产测试中效果很好,但在单元测试中效果不佳。该值为“null”
:
如何使用框架Moq模拟/Web.conf
中的设置?如果您将配置文件读取抽象化,并将此抽象注入到类中,而不是直接使用ConfigurationManager
,则会更好。然后,对于您的测试,您可以模拟抽象
创建IConfigurationReader
界面:
public interface IConfigurationReader
{
string GetConfigSetting(string settingName);
}
真正的实现将使用ConfigurationManager
,但对于测试,您可以模拟IConfigurationReader
这似乎有些过分,但这是一次性的工作,可以在应用程序中重用。附加的好处是,如果有一天您决定从其他地方读取配置设置,您只需更改实现,而不必接触您的消费者。您可能需要将这些配置设置复制到测试项目的配置文件中。测试项目将无法访问网站的web.config
。感谢您的回答,但这并不能解决问题-相同的行为:null。这绝对不会过火。我刚刚花了几个小时来处理不同的配置文件,最后决定对配置进行抽象。