我正在寻找一种方法来使用Moles“绕道”配置文件中的单个项目。我可以这样做:
NameValueCollection appsettings = new NameValueCollection();
appSettings.Add("MyKey", "MyValue");
System.Configuration.Moles.MConfigurationManager.AppSettingsGet = () => this.appSettings;
这很好用,但我尝试测试的类使用了一些其他的配置设置,包括ConfigSections和Moles绕道似乎打破了这个。我只想替换一个特定的值,而不是整个部分。在TypeMock中,我可以这样做:
Isolate.WhenCalled(() => ConfigurationManager.AppSettings["MyKey"]).WithExactArguments().WillReturn("MyValue");
当我使用TypeMock模拟配置管理器时,我的测试通过,但是当我使用Moles版本(看起来它应该做同样的事情)时,它失败意味着Moles必须以TypeMock不会影响ConfigurationManager类的方式“T
关于我如何使用鼹鼠来表现出与TypeMock一样的行为的任何帮助将不胜感激。
答案 0 :(得分:0)
制作当前app.settings部分的副本:
NameValueCollection appSettings = new NameValueCollection(ConfigurationManager.AppSettings);
通过调用Set / Add函数修改所需的部分(请记住,'添加'功能不会覆盖现有值,但会为键添加新值。另一方面,'设置'始终创建新条目并删除现有值>:
appSettings.Set("key name", "new value");
创建委托:
MConfigurationManager.AppSettingsGet =
() =>
{
return appSettings;
};