2012-11-27 17 views
7

Kimliği doğrulanmış kullanıcıyı Moq framework kullanarak nasıl alay edebiliyoruz. Form Kimlik Doğrulaması kullanıldı.Kimliği doğrulanmış kullanıcının Moq kullanarak birim sınamada kullanılmasını sağlama

Buraya kimliği böyle bir şeyi kullandık

+2

Sadece boş bir merak - burada sormadan önce kendiniz bir şey denediniz mi? Ne senin için çalışmadı? –

+1

Belki de [Benzer SO konusu] (http://stackoverflow.com/questions/3027264/mocking-user-identity-in-asp-net-mvc) yardımcı olabilir? –

+1

Wehey. Tıpkı benim de çözdüğüm gibi. Alt satır, bağımlılık enjeksiyonu ve kontrolün ters çevrilmesi gibi konulara bakar. –

cevap

18

değerini alay etmek gerek

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

altında eylem için birim testleri yazmak gerek, belki de size yardımcı olur:

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

Bunu benzer bir şekilde, sadece "IPrincipal" alay etmeden yapıyorum: 'contollerContext.Setup (ctx => ctx.HttpContext.User.IsInRole (" Yönetici ")). (True); –

İlgili konular