Considere un método en un ensamblado de .NET:Moq: unidad de evaluación de un método depender de HttpContext
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;
}
me gustaría llamar a este método desde una unidad de prueba utilizando el marco Moq. Este ensamblaje es parte de una solución de formularios web. La prueba unitaria se ve así, pero me falta el código 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.");
Pregunta:
- ¿Cómo puedo usar Moq para organizar un objeto HttpContext falsa con algún valor como 'MiDominio \ MyUser'?
- ¿Cómo asocio esa falsificación con mi llamada a mi método estático al
MyIdentityBL.GetSecurityContextUserName()
? - ¿Tiene alguna sugerencia sobre cómo mejorar este código/arquitectura?
No se puede utilizar la nueva HttpContextBase(), ya que es una clase abstracta (como su nombre indica). En su lugar, debe usar HttpContextWrapper() nuevo. –
Gracias ... mi cerebro estaba por encima de mis manos cuando contesté esto, supongo;) – womp