我在我的MVC3应用程序中使用VisualStudio.TestTools
进行单元测试。该文件包含/Web.conf
自定义配置,其价值"false"
我不能用ConfigurationManager.AppSettings["DisableCheckboxes"];
在我的控制器得到:使用moq在Web.conf中模拟设置
这对生产效果很好,但不是在单元测试。该值是"null"
:
我如何使用框架起订量在/Web.conf
嘲笑的设置?
我在我的MVC3应用程序中使用VisualStudio.TestTools
进行单元测试。该文件包含/Web.conf
自定义配置,其价值"false"
我不能用ConfigurationManager.AppSettings["DisableCheckboxes"];
在我的控制器得到:使用moq在Web.conf中模拟设置
这对生产效果很好,但不是在单元测试。该值是"null"
:
我如何使用框架起订量在/Web.conf
嘲笑的设置?
如果你抽象配置文件读取,并将这个抽象注入到你的类中,而不是直接使用ConfigurationManager
,那么你最好是。然后为了测试你可以嘲笑抽象。
创建IConfigurationReader
接口:
public interface IConfigurationReader
{
string GetConfigSetting(string settingName);
}
真正实现将使用ConfigurationManager
,但对于测试,你可以嘲笑IConfigurationReader
。
看起来有些过分,但它是一次性工作,可以在整个应用程序中重用。额外的好处是,如果有一天你决定从其他地方读取配置设置,你只需改变实现,不要触及你的消费者。
您可能必须将这些配置设置复制到您的测试项目的配置文件中。测试项目不会访问该网站的'web.config'。 –
谢谢你的回答,但那并不解决问题 - 相同的行为:null。 – Simon