我VisualStudio.TestTools
在我的 MVC3 应用程序中使用单元测试。该文件/Web.conf
包含一个自定义配置,"false"
我无法通过以下方式在控制器中获取该配置ConfigurationManager.AppSettings["DisableCheckboxes"];
:
这在生产上很有效,但在单元测试中却不行。值为"null"
:
如何使用框架 Moq 模拟设置/Web.conf
?
我VisualStudio.TestTools
在我的 MVC3 应用程序中使用单元测试。该文件/Web.conf
包含一个自定义配置,"false"
我无法通过以下方式在控制器中获取该配置ConfigurationManager.AppSettings["DisableCheckboxes"];
:
这在生产上很有效,但在单元测试中却不行。值为"null"
:
如何使用框架 Moq 模拟设置/Web.conf
?
如果您抽象配置文件读取,并将此抽象注入您的类,而不是直接使用ConfigurationManager
. 然后对于您的测试,您可以模拟抽象。
创建IConfigurationReader
接口:
public interface IConfigurationReader
{
string GetConfigSetting(string settingName);
}
真正的实现将使用ConfigurationManager
,但您可以模拟测试IConfigurationReader
。
这可能看起来有点矫枉过正,但这是一次性的工作,可以在您的整个应用程序中重复使用。额外的好处是,如果有一天您决定从其他地方读取配置设置,您只需更改实现,而无需接触您的消费者。