2013-07-23 89 views
3

我在我的MVC3应用程序中使用VisualStudio.TestTools进行单元测试。该文件包含/Web.conf自定义配置,其价值"false"我不能用ConfigurationManager.AppSettings["DisableCheckboxes"];在我的控制器得到:使用moq在Web.conf中模拟设置

screenshot web.conf

这对生产效果很好,但不是在单元测试。该值是"null"

result of appsettings

我如何使用框架起订量在/Web.conf嘲笑的设置?

+0

您可能必须将这些配置设置复制到您的测试项目的配置文件中。测试项目不会访问该网站的'web.config'。 –

+0

谢谢你的回答,但那并不解决问题 - 相同的行为:null。 – Simon

回答

7

如果你抽象配置文件读取,并将这个抽象注入到你的类中,而不是直接使用ConfigurationManager,那么你最好是。然后为了测试你可以嘲笑抽象。

创建IConfigurationReader接口:

public interface IConfigurationReader 
{ 
    string GetConfigSetting(string settingName); 
} 

真正实现将使用ConfigurationManager,但对于测试,你可以嘲笑IConfigurationReader

看起来有些过分,但它是一次性工作,可以在整个应用程序中重用。额外的好处是,如果有一天你决定从其他地方读取配置设置,你只需改变实现,不要触及你的消费者。

+1

没有办法矫枉过正。我花了几个小时与不同的配置文件作斗争,最后决定抽象配置。 – ProfK

+1

一些示例代码会很好。 – Alan

相关问题