2012-11-27 31 views
7

हम एमओसी फ्रेमवर्क का उपयोग कर प्रमाणीकृत उपयोगकर्ता का नकल कैसे कर सकते हैं। प्रपत्र प्रमाणीकरण का इस्तेमाल किया।यूनिट परीक्षण में एमओक का उपयोग कर नकली प्रमाणीकृत उपयोगकर्ता

मैं मैं userid यहाँ

+2

बस जिज्ञासा निष्क्रिय - क्या आपने यहां पूछने से पहले कुछ भी करने की कोशिश की है? तुम्हारे लिए क्या काम नहीं किया? –

+1

शायद [समान SO विषय] (http://stackoverflow.com/questions/3027264/mocking-user-identity-in-asp-net-mvc) मदद कर सकता है? –

+1

वेहे। जैसे मैं इसे भी हल कर दूंगा। निचली पंक्ति है, निर्भरता इंजेक्शन और नियंत्रण में उलटा जैसे विषयों में देखो। –

उत्तर

18

मैं ऐसा ही कुछ का इस्तेमाल किया है के लिए मूल्य नकली करने की जरूरत है नीचे

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

कार्रवाई के लिए इकाई परीक्षण लिखने के लिए की जरूरत है, शायद यह आप में मदद करता है:

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

मैं इसे इसी तरह से करता हूं, बस 'आईप्रिनिस्ट्रियल' का मज़ाक उड़ाए बिना: 'contollerContext.Setup (ctx => ctx.HttpContext.User.IsInRole (" व्यवस्थापक "))। (सत्य);' –