मैं एक एमवीसी नियंत्रक कार्रवाई के लिए यूनिट-टेस्ट (सी # में) लिखना चाहता हूं जो अनुरोध को प्रमाणीकृत किया गया है या नहीं, इस पर निर्भर करता है कि एक दृश्य या दूसरा वापस आ सकता है। यह कैसे किया जा सकता है?एक एमवीसी नियंत्रक कार्रवाई इकाई-परीक्षण कैसे करें जो सी # में प्रमाणीकरण पर निर्भर करता है?
उत्तर
आप अपना अनुरोध नकल कर सकते हैं। इस (Moq का प्रयोग करके) की तरह कुछ:
var request = new Mock<HttpRequestBase>();
request.SetupGet(x => x.IsAuthenticated).Returns(true); // or false
var context = new Mock<HttpContextBase>();
context.SetupGet(x => x.Request).Returns(request.Object);
var controller = new YourController();
controller.ControllerContext =
new ControllerContext(context.Object, new RouteData(), controller);
// test
ViewResult viewResult = (ViewResult)controller.SomeAction();
Assert.True(viewResult.ViewName == "ViewForAuthenticatedRequest");
मजाक और निर्भरता इंजेक्शन का उपयोग करना। निम्नलिखित मानते हैं कि आप जांच रहे हैं कि यह प्रमाणीकृत है और फिर उपयोगकर्ता की आईडी प्राप्त करने के लिए उपयोगकर्ता ऑब्जेक्ट तक पहुंच रहा है। RhinoMocks का उपयोग करता है।
// mock context variables
var username = "user";
var httpContext = MockRepository.GenerateMock<HttpContextBase>();
var request = MockRepository.GenerateMock<HttpRequestBase>();
var identity = MockRepository.GenerateMock<IIdentity>();
var principal = MockRepository.GenerateMock<IPrincipal>();
httpContext.Expect(c => c.Request).Return(request).Repeat.AtLeastOnce();
request.Expect(r => r.IsAuthenticated).Return(true).Repeat.AtLeastOnce();
httpContext.Expect(c => c.User).Return(principal).Repeat.AtLeastOnce();
principal.Expect(p => p.Identity).Return(identity).Repeat.AtLeastOnce();
identity.Expect(i => i.Name).Return(username).Repeat.AtLeastOnce();
var controller = new MyController();
// inject context
controller.ControllerContext = new ControllerContext(httpContext,
new RouteData(),
controller);
var result = controller.MyAction() as ViewResult;
Assert.IsNotNull(result);
// verify that expectations were met
identity.VerifyAllExpectations();
principal.VerifyAllExpectations();
request.VerifyAllExpectations();
httpContext.VerifyAllExpectations();
धन्यवाद के बिना एक ही दृश्यनाम देता है जो मुझे यकीन है कि मैं उत्कृष्टता से काम कर रहा हूं। चूंकि मैंने यू-जी-एन उत्तर का परीक्षण किया है (जो मेरे लिए ठीक काम करता है) और वह प्रतिक्रिया के साथ थोड़ा तेज था, मैंने उसका जवाब चिह्नित किया। कोई अपराध नहीं। आपका दिन शुभ हो। ;) – Mats
कोई समस्या नहीं है। यह वास्तव में एक ही जवाब है। मैंने केवल मेरा छोड़ा क्योंकि यह दिखाता है कि अगर आपको उपयोगकर्ता नाम प्राप्त करने की आवश्यकता है या प्रिंसिपल पर IsInRole विधि, जो मैंने नहीं दिखाया है तो प्रिंसिपल/पहचान का नकल कैसे करें। – tvanfosson
- 1. एमवीसी Jquery नियंत्रक कार्रवाई
- 2. Asp.Net एमवीसी प्रमाणीकरण - निर्भर फ़ील्ड
- 3. एएसपी.नेट एमवीसी नियंत्रक कार्रवाई को सुरक्षित करना जो JSON
- 4. एमवीसी नियंत्रक कार्रवाई से जावास्क्रिप्ट कॉल करें
- 5. नियंत्रक कार्रवाई
- 6. दृश्य के बिना एमवीसी नियंत्रक कार्रवाई चलाएं?
- 7. सभी नियंत्रक क्रियाओं (सी #/एएसपी.नेट एमवीसी) पर कार्रवाई फ़िल्टर लागू करें
- 8. रेडिस पाइपलाइन एकाधिक कमांड जो पिछले पर निर्भर करता है?
- 9. एक नियंत्रक कार्रवाई
- 10. सी # एमवीसी 3, कार्रवाई ओवरलोडिंग?
- 11. एक मौजूदा दृश्य को नियंत्रक कार्रवाई में कैसे संलग्न करें?
- 12. एएसपी.नेट एमवीसी - नियंत्रक कोड से वर्तमान कार्रवाई?
- 13. पृष्ठभूमि कार्यकर्ता ब्लॉकिंग एमवीसी नियंत्रक कार्रवाई
- 14. नियंत्रक कार्रवाई
- 15. एएसपीनेट एमवीसी कार्रवाई को कैसे लॉक करें?
- 16. मैं एक एमवीसी नियंत्रक
- 17. नियंत्रक कार्रवाई
- 18. एएसपी.नेट एमवीसी में JSONResult विधि से नियंत्रक कार्रवाई पर रीडायरेक्ट कैसे करें?
- 19. Django - उदाहरण पर निर्भर करता है जो उदाहरण
- 20. मैं नियंत्रक कार्रवाई
- 21. प्रोफ़ाइल एक रेल नियंत्रक कार्रवाई
- 22. परीक्षण नियंत्रक कार्रवाई User.Identity.Name
- 23. एक HTTP नियंत्रक के बिना किसी अन्य नियंत्रक कार्रवाई से एक नियंत्रक कार्रवाई चलाने का सही तरीका क्या है?
- 24. Mojolicious में किसी अन्य नियंत्रक में कार्रवाई कैसे कॉल करें?
- 25. इसके साथ एक क्रिया प्रस्तुत करना: नोटिस जो यूआरएल परम पर निर्भर करता है
- 26. क्या यह एक विधि के लिए एक कोड गंध है जो दूसरे पर निर्भर करता है?
- 27. मैं एक नियंत्रक कार्रवाई का परीक्षण कैसे करता हूं जो थर्म कंट्रोलर का उपयोग करता है। उपयोगकर्ता परिवर्तक?
- 28. विजुअल स्टूडियो: एक समाधान कैसे दूसरे पर निर्भर करता है?
- 29. मैं एमवीसी 3 में अपना विचार कहलाता नियंत्रक कार्रवाई का नाम कैसे ढूंढ सकता हूं?
- 30. एक एंड्रॉइड ऐप कैसे बनाया जाए जो किसी अन्य ऐप पर निर्भर करता है?
साफ। आपके उत्तर के लिए धन्यवाद। ;) – Mats
यह मेरे लिए काम नहीं करता है - आपके उत्तर के लिए सच/झूठी – Kev