3

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

我想测试填充在 web.config 文件中的自定义配置部分值是否正确并且GetSection能够正确读取它们。有没有办法在不为 nunit 创建另一个具有完全相同值的配置文件的情况下对此进行测试?

4

3 回答 3

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 ...
于 2013-02-28T10:55:14.927 回答
1

有没有办法在不为 nunit 创建另一个具有完全相同值的配置文件的情况下对此进行测试?

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

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

  • MyApp.Configuration(包含自定义部分和元素)
  • MyApp.Configuration.Tests(包含一个app.config允许测试您的自定义配置部分的文件)
于 2013-02-28T10:43:20.690 回答
0

除了接受的答案之外,以防万一您正在寻找有关如何避免将单独的配置文件添加到您的测试项目然后将主配置文件与您的测试文件同步的答案,这里有一个链接描述了一种简洁的方式将原始 app/web.config 添加为测试项目中的链接。您实际上是在处理一个配置文件。 此博客讨论了使用TestConigurationSection 和 ExeConfigurationFileMap 的替代方法(您可以使用等效的WebConfigurationFileMap

于 2014-01-27T13:00:24.953 回答