2012-11-27 12 views
7

Come possiamo prendere in giro l'utente autenticato usando il framework Moq. Autenticazione modulo utilizzata.Mock utente autenticato che utilizza Moq durante il test dell'unità

ho bisogno di scrivere unit test per l'azione di seguito

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

ho bisogno di prendere in giro il valore per l'utente id qui

+2

Solo ozioso curiosità: hai provato qualcosa da solo prima di chiedere qui? Cosa non ha funzionato per te? –

+1

Forse [simile argomento SO] (http://stackoverflow.com/questions/3027264/mocking-user-identity-in-asp-net-mvc) potrebbe aiutare? –

+1

Wehey. Proprio come avrei risolto anche io. La linea di fondo è, esaminare argomenti come l'iniezione di dipendenza e l'inversione di controllo. –

risposta

18

ho usato qualcosa di simile, forse ti aiuta:

var controllerContext = new Mock<ControllerContext>(); 
var principal = new Moq.Mock<IPrincipal>(); 
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; 
+0

Lo faccio in un modo simile, senza fare il mocking di 'IPrincipal': ' contollerContext.Setup (ctx => ctx.HttpContext.User.IsInRole ("Administrator")). Restituisce (true); ' –

Problemi correlati