Prism 4アプリを作成していて、ServiceLocator
オブジェクトをインスタンス化するためにを使用しています。これServiceLocator
はユニットテストの問題を引き起こしており、それを必要とする各クラスにIoCコンテナを注入することに戻るべきかどうか疑問に思います。
リポジトリ基本クラスの問題の例を次に示します。
protected RepositoryBase(string filePath, Type contextType, string edmName)
{
m_Logger = ServiceLocator.Current.GetInstance<ILoggerFacade>();
// Log invocation
m_Logger.Log("RepositoryBase constructor invoked.", Category.Info, Priority.None);
// Create object context
...
// Log completion
m_Logger.Log("RepositoryBase constructor completed.", Category.Info, Priority.None);
}
リポジトリの単体テストを作成していますがServiceLocator
、おそらくPrismがテスト用に初期化されていないために、が機能しないことがわかりました。
ServiceLocator
テストコンテキストで使用できますか?それをドロップして、IoCコンテナを直接注入することに戻りますか?サービスロケーターは一般的に不利になっているようですが、使用しないほうがいいでしょうか?ご協力いただきありがとうございます。