Moq: Unit testet eine Methode, die auf HttpContext basiert

Denken Sie an eine Methode in einem .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;      
}

Möchte ich Ihnen diese Methode von einem unit test die Verwendung der Moq-framework. Diese assembly ist Teil eines webforms Lösung. Der unit-test sieht wie folgt aus, aber ich vermisse die 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, vereinbaren Sie einen fake HttpContext-Objekt mit einem Wert wie "MyDomain\MyUser'?
  • Wie assoziiere ich, dass fake mit meinem Anruf in meine statische Methode an MyIdentityBL.GetSecurityContextUserName()?
  • Haben Sie Vorschläge zur Verbesserung dieser code/Architektur?

InformationsquelleAutor der Frage p.campbell | 2009-07-31

Schreibe einen Kommentar