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?