我正在寻找一种方法来使用 Moles 在配置文件中“绕道”单个项目。我可以做这个:
NameValueCollection appsettings = new NameValueCollection();
appSettings.Add("MyKey", "MyValue");
System.Configuration.Moles.MConfigurationManager.AppSettingsGet = () => this.appSettings;
这很好用,但是我尝试测试的类使用了一些其他配置设置,包括 ConfigSections 和 Moles detour 似乎已经打破了这一点。我只想替换一个特定的值,而不是整个部分。在 TypeMock 中,我可以这样做:
Isolate.WhenCalled(() => ConfigurationManager.AppSettings["MyKey"]).WithExactArguments().WillReturn("MyValue");
当我使用 TypeMock 模拟 configurationManager 时,我的测试通过了,但是当我使用 Moles 版本(看起来它应该做同样的事情)时它失败了,这意味着 Moles 必须以 TypeMock 没有的方式影响 ConfigurationManager 类。
任何有关我如何使用痣以按照 TypeMock 的方式行事的帮助将不胜感激。