शायद यह आंखों की एक और जोड़ी की आवश्यकता होने का मामला बनने जा रहा है। मुझे कुछ याद आना चाहिए, लेकिन मुझे पता नहीं चल सकता कि इस तरह की चीज़ का परीक्षण क्यों नहीं किया जा सकता है। मैं मूल रूप से यह सुनिश्चित करें कि अप्रमाणित उपयोगकर्ताओं [अधिकृत] विशेषता के साथ नियंत्रक चिह्नित करके देखने तक नहीं पहुँच सकता कोशिश कर रहा हूँ और मैं परीक्षण करने के लिए इस का उपयोग करते हुए निम्न कोड कोशिश कर रहा हूँ:यूनिट परीक्षण एएसपी.Net एमवीसी प्राधिकरण विशेषता लॉगिन पृष्ठ पर रीडायरेक्ट सत्यापित करने के लिए
[Fact]
public void ShouldRedirectToLoginForUnauthenticatedUsers()
{
var mockControllerContext = new Mock<ControllerContext>()
{ DefaultValue = DefaultValue.Mock };
var controller = new MyAdminController()
{ControllerContext = mockControllerContext.Object};
mockControllerContext.Setup(c =>
c.HttpContext.Request.IsAuthenticated).Returns(false);
var result = controller.Index();
Assert.IsAssignableFrom<RedirectResult>(result);
}
RedirectResult मैं देख रहा हूँ क्योंकि किसी प्रकार का संकेत है कि उपयोगकर्ता को लॉगिन फॉर्म पर रीडायरेक्ट किया जा रहा है, लेकिन इसके बजाय एक व्यूअरसल्ट हमेशा वापस आ जाता है और जब डिबगिंग मैं देख सकता हूं कि इंडेक्स() विधि सफलतापूर्वक हिट हो जाती है भले ही उपयोगकर्ता प्रमाणीकृत नहीं है।
क्या मैं कुछ गलत कर रहा हूं? गलत स्तर पर परीक्षण? क्या मुझे इस तरह की चीज़ के लिए मार्ग स्तर पर परीक्षण करना चाहिए?
मुझे पता है कि [अधिकृत] विशेषता काम कर रही है, क्योंकि जब मैं पृष्ठ को स्पिन करता हूं, तो लॉगिन स्क्रीन वास्तव में मुझ पर मजबूर होती है - लेकिन मैं इसे परीक्षण में कैसे सत्यापित करूं?
नियंत्रक और अनुक्रमणिका विधि बहुत सरल हैं ताकि मैं व्यवहार को सत्यापित कर सकूं। मैं उन्हें संपूर्णता के लिए शामिल किया है:
[Authorize]
public class MyAdminController : Controller
{
public ActionResult Index()
{
return View();
}
}
सराहना की कोई मदद ...
धन्यवाद डायलन - मैंने सोचा कि मैं गलत स्तर पर परीक्षण कर रहा हूं। मैं "मानते हुए" के विचार से खुश हूं कि अगर नियंत्रक हिट हो जाता है, तो उपयोगकर्ता प्रमाणित होता है। पीएस क्या आप वाकई ढांचे में परीक्षण कर रहे हैं? मैं वैध आईप्रिंसिपल की आपूर्ति करने वाले कुछ परीक्षण देख सकता हूं, लेकिन कोई भी जो अवैध मामले का परीक्षण नहीं करता ;-) – RobertTheGrey
एर, नहीं ... वास्तव में परीक्षण केस को सत्यापित नहीं किया है; मैं एमवीसी गिरोह पर भरोसा कर रहा हूं कि यह सही हो गया है। मेरी गलती! –
मुझे यह जवाब पसंद है कि यह सही दृष्टिकोण क्यों नहीं है, लेकिन मैं तर्क पर आश्वस्त नहीं हूं "सुविधा ढांचे और कार्यों में परीक्षण की जाती है"। मुझे भरोसा है कि विशेषता ठीक से काम कर रही है, यह ढांचा का काम है, लेकिन मैं अभी भी यह कहना चाहूंगा कि मेरे नियंत्रकों के कौन से तरीके विशेषता का उपयोग करते हैं। – Mathias