.NETアセンブリのメソッドについて考えてみます。
public static string GetSecurityContextUserName()
{
//extract the username from request
string sUser = HttpContext.Current.User.Identity.Name;
//everything after the domain
sUser = sUser.Substring(sUser.IndexOf("\\") + 1).ToLower();
return sUser;
}
Moqフレームワークを使用した単体テストからこのメソッドを呼び出したいと思います。このアセンブリは、Webフォームソリューションの一部です。単体テストは次のようになりますが、Moqコードがありません。
//arrange
string ADAccount = "BUGSBUNNY";
string fullADName = "LOONEYTUNES\BUGSBUNNY";
//act
//need to mock up the HttpContext here somehow -- using Moq.
string foundUserName = MyIdentityBL.GetSecurityContextUserName();
//assert
Assert.AreEqual(foundUserName, ADAccount, true, "Should have been the same User Identity.");
質問:
- Moqを使用して、「MyDomain \ MyUser」のような値を持つ偽のHttpContextオブジェクトを配置するにはどうすればよいですか?
- その偽物をで静的メソッドへの呼び出しと関連付けるにはどうすればよい
MyIdentityBL.GetSecurityContextUserName()
ですか? - このコード/アーキテクチャを改善する方法について何か提案はありますか?