3

VisualStudio.TestTools在我的 MVC3 应用程序中使用单元测试。该文件/Web.conf包含一个自定义配置,"false"我无法通过以下方式在控制器中获取该配置ConfigurationManager.AppSettings["DisableCheckboxes"];

截图 web.conf

这在生产上很有效,但在单元测试中却不行。值为"null"

应用设置的结果

如何使用框架 Moq 模拟设置/Web.conf

4

1 回答 1

7

如果您抽象配置文件读取,并将此抽象注入您的类,而不是直接使用ConfigurationManager. 然后对于您的测试,您可以模拟抽象。

创建IConfigurationReader接口:

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

真正的实现将使用ConfigurationManager,但您可以模拟测试IConfigurationReader

这可能看起来有点矫枉过正,但这是一次性的工作,可以在您的整个应用程序中重复使用。额外的好处是,如果有一天您决定从其他地方读取配置设置,您只需更改实现,而无需接触您的消费者。

于 2013-07-23T16:51:45.163 回答