私は現在UnityをMOQで使用してWCFのユニットテストを行っています。アプリケーションのコードでは、私は以下の持っている:アプリケーションのapp.configをでMicrosoft Unity - 実行時に登録されたタイプを変更することはできますか?
private void MyMethod()
{
.....
.....
_proxy = new UnityContainer().LoadConfiguration().Resolve<IMyInterface>();
.....
}
、私は次のようしている:
ユニットテストのapp.configをで<container>
<register type="IMyInterface" mapTo="MyActualObject" />
</container>
、私は私のモックとのこと置き換えますプロキシのオブジェクト実装。
<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")を使用して設定がキャッシュされないように、セクションをリフレッシュするだけでした。しかし、これが私が必要とするものを達成する唯一の方法ですか? –