Usuario autenticado simulado usando Moq en pruebas unitarias

Cómo podemos burlarnos del usuario autenticado usando el framework Moq. Autenticación de formulario utilizado.

Necesito escribir pruebas unitarias para la acción a continuación.

public PartialViewResult MyGoals() { int userid = ((SocialGoalUser)(User.Identity)).UserId; var Goals = goalService.GetMyGoals(userid); return PartialView("_MyGoalsView", Goals); } 

Necesito burlarme del valor para el ID de usuario aquí.

He usado algo así, tal vez te ayude:

 var controllerContext = new Mock(); var principal = new Moq.Mock(); principal.Setup(p => p.IsInRole("Administrator")).Returns(true); principal.SetupGet(x => x.Identity.Name).Returns(userName); controllerContext.SetupGet(x => x.HttpContext.User).Returns(principal.Object); controller.ControllerContext = controllerContext.Object;