我目前使用Unity和最小起订量来做我的WCF单元测试。在应用程序的代码,我有以下几点:Microsoft Unity - 是否可以在运行时更改注册类型?
private void MyMethod()
{
.....
.....
_proxy = new UnityContainer().LoadConfiguration().Resolve<IMyInterface>();
.....
}
在应用程序的app.config中,我有以下几点:
<container>
<register type="IMyInterface" mapTo="MyActualObject" />
</container>
在单元测试的app.config中,我更换我的模拟代理的对象实现。
<container>
<register type="IMyInterface" mapTo="MyMockObject" />
</container>
这一切工作正常。但是我想进一步做某些测试,我想用一个不同的模拟对象实现替换MyMockObject。
是否可以在运行时更改注册类型?我曾尝试在运行时修改应用程序配置,但未能检测到更改。
Configuration appConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var section = (UnityConfigurationSection)appConfig.GetSection("unity");
section.Containers[0].Registrations[0].MapToName = "AnotherMockObject";
appConfig.Save();
谢谢!!
它看起来像修改在运行时配置文件会工作。我只需要刷新该部分,以便使用ConfigurationManager.RefreshSection(“unity”)不会缓存配置。但是这是实现我所需要的唯一途径吗? – 2012-04-26 04:46:40