データレイヤーにアクセスして文字列を取得するHtmlHelperの単体テストを作成しようとしています。私はこれに関する多くの投稿を見てきましたが、おそらく何かが欠けています。私が抱えている問題は、データレイヤーへのアクセスをどのようにモックするかです。私は通常、コンストラクターを介して依存関係のijectionを実行しますが、htmlヘルパーは静的である必要があるため、ここでは実行できません。したがって、プロパティを介してインジェクションを設定しましたが、単体テストからこれにアクセスするにはどうすればよいですか。これが明らかな場合は申し訳ありませんが、今私を台無しにしています。
これが私が持っているものです-
public static class StringResourceHelper
{
#region Private Members
private static IStringResourceService _service;
#endregion
#region Public Properties
private static IStringResourceService Service
{
get
{
if(_service==null)
{
_service = (IStringResourceService)Bootstrapper.Container.Resolve(typeof(IStringResourceService));
}
return _service;
}
}
#endregion
#region Public Methods
public static string StringResource(this HtmlHelper helper, string label)
{
int languageCode;
if(helper.ViewData["LanguageCode"] == null || !Int32.TryParse(helper.ViewData["LanguageCode"].ToString(), out languageCode))
{
languageCode = Constants.LanguageCodes.English;
}
return Service.GetString(label, languageCode);
}
#endregion
}
Service.GetString呼び出しをモックするにはどうすればよいですか?