如何在web.config中测试自定义配置部分?

时间:2013-02-28 10:41:27

标签: c# .net asp.net-mvc-4 asp.net-web-api

我的MVC Web API应用程序有一个自定义配置部分,应用程序使用该部分配置值。

我想测试web.config文件中填充的自定义配置节值是否正确,GetSection是否能够正确读取它们。有没有办法测试这个没有为具有完全相同值的nunit创建另一个配置文件?

3 个答案:

答案 0 :(得分:4)

  

有没有办法测试这个,而不为具有完全相同值的nunit创建另一个配置文件?

是的,您可以按照以下方式执行此操作:

Configuration OpenWebConfiguration(string configurationFilePath)
{
    var configurationFileInfo = new FileInfo(configurationFilePath);
    var vdm = new VirtualDirectoryMapping(configurationFileInfo.DirectoryName, true, configurationFileInfo.Name);
    var wcfm = new WebConfigurationFileMap();
    wcfm.VirtualDirectories.Add("/", vdm);
    return WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/");
}

...
var c = OpenWebConfiguration(pathToWebConfigFile);
var section = c.GetSection(sectionName);
... etc ...

答案 1 :(得分:1)

  

有没有办法测试这个,而不为具有完全相同值的nunit创建另一个配置文件?

不,没有。您需要有一个配置文件才能测试自定义部分。还有什么比单元测试项目更好的地方呢?这似乎是一个完美的地方。

例如,您可以在解决方案中使用以下项目:

  • MyApp.Configuration(包含自定义部分和元素)
  • MyApp.Configuration.Tests(包含允许测试自定义配置部分的app.config文件)

答案 2 :(得分:0)

除了接受的答案之外,以防万一您正在寻找如何避免将单独的配置文件添加到Test项目然后将主配置文件与测试文件同步的答案,here's a link描述了将原始app / web.config添加为Test项目中的链接的简洁方法。你基本上是在处理一个配置文件。 This blog 使用TestConigurationSection讨论替代方法 和ExeConfigurationFileMap(您可以使用等效的WebConfigurationFileMap