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

本文关键字:自定义 配置部 config web 何测试 测试 | 更新日期: 2023-09-27 18:01:28

我的MVC Web API应用程序有一个自定义配置节,用于应用程序的配置值。

我想测试自定义配置节值是否在web中填充。配置文件是正确的,GetSection能够正确读取它们。是否有任何方法可以在不为nunit创建另一个具有完全相同值的配置文件的情况下进行测试?

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

是否有任何方法可以在不为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 ...

是否有任何方法可以在不为nunit创建另一个具有完全相同值的配置文件的情况下进行测试?

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

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

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

除了接受的答案,以防您正在寻找如何避免在测试项目中添加单独的配置文件,然后将主配置文件与测试文件同步的答案,这里有一个链接,它描述了添加原始应用程序/web的整洁方式。配置为测试项目中的链接。您实际上是在处理单个配置文件。本博客讨论了使用testconfigurationsection的另一种方法和execconfigurationfilemap(您可以使用等效的WebConfigurationFileMap)