我的MVC Web API应用程序有一个自定义配置部分,应用程序使用该部分配置值。
我想测试web.config文件中填充的自定义配置节值是否正确,GetSection
是否能够正确读取它们。有没有办法测试这个没有为具有完全相同值的nunit创建另一个配置文件?
答案 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创建另一个配置文件?
不,没有。您需要有一个配置文件才能测试自定义部分。还有什么比单元测试项目更好的地方呢?这似乎是一个完美的地方。
例如,您可以在解决方案中使用以下项目:
app.config
文件)答案 2 :(得分:0)
除了接受的答案之外,以防万一您正在寻找如何避免将单独的配置文件添加到Test项目然后将主配置文件与测试文件同步的答案,here's a link描述了将原始app / web.config添加为Test项目中的链接的简洁方法。你基本上是在处理一个配置文件。 This blog 使用TestConigurationSection讨论替代方法 和ExeConfigurationFileMap(您可以使用等效的WebConfigurationFileMap)