Moq: Unit-Test einer Methode, die auf HttpContext basiert

Betrachten Sie eine Methode in einer .NET-Assembly:

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;      
}

Ich möchte diese Methode aus einem Unit-Test mit dem Moq-Framework aufrufen. Diese Assembly ist Teil einer Webforms-Lösung. Der Komponententest sieht so aus, aber mir fehlt der Moq-Code.

//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.");

Frage:

Wie kann ich mit Moq ein falsches HttpContext-Objekt mit einem Wert wie "MyDomain \ MyUser" anordnen?Wie verbinde ich diese Fälschung mit meinem Aufruf in meiner statischen Methode unterMyIdentityBL.GetSecurityContextUserName()?Haben Sie Vorschläge zur Verbesserung dieses Codes / dieser Architektur?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage