我目前正在使用 Unity 和 MOQ 对 WCF 进行单元测试。在应用程序的代码中,我有以下内容:
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();
谢谢!!