मुझे उम्मीद है कि यह सवाल कुछ दिलचस्प जवाब देता है क्योंकि यह एक है जिसने मुझे थोड़ी देर के लिए उकसाया है।
ASP.NET MVC में नियंत्रक का परीक्षण करने वाली इकाई का कोई वास्तविक मूल्य है?
मेरा मतलब है कि ज्यादातर समय, (और मैं कोई प्रतिभाशाली नहीं हूं), मेरे नियंत्रक तरीके हैं, यहां तक कि उनके सबसे जटिल कुछ इस पर हैं:
public ActionResult Create(MyModel model)
{
// start error list
var errors = new List<string>();
// check model state based on data annotations
if(ModelState.IsValid)
{
// call a service method
if(this._myService.CreateNew(model, Request.UserHostAddress, ref errors))
{
// all is well, data is saved,
// so tell the user they are brilliant
return View("_Success");
}
}
// add errors to model state
errors.ForEach(e => ModelState.AddModelError("", e));
// return view
return View(model);
}
अधिकांश हेवी-लिफ्टिंग MVC पाइपलाइन या मेरी सेवा लाइब्रेरी द्वारा की जाती है।
तो शायद सवाल पूछने के लिए हो सकता है:
- इस विधि का परीक्षण करने वाली इकाई का मूल्य क्या होगा?
- यह एक NullReferenceException पर
Request.UserHostAddress
और उसकेModelState
साथ नहीं टूटेगा ? क्या मुझे इनका मजाक उड़ाने की कोशिश करनी चाहिए? - अगर मैं इस विधि को फिर से उपयोग करने योग्य "सहायक" (जो मुझे शायद यह करना चाहिए कि मैं इसे कितनी बार कर रहा हूं!) में अपवर्तक करता हूं, तो यह परीक्षण करेगा कि जब मैं वास्तव में परीक्षण कर रहा हूं तो यह भी सार्थक होगा कि ज्यादातर "पाइपलाइन" जो है! शायद, यह Microsoft द्वारा जीवन के एक इंच के भीतर परीक्षण किया गया है?
मुझे लगता है कि मेरी बात वास्तव में है, निम्न करना बिल्कुल व्यर्थ और गलत लगता है
[TestMethod]
public void Test_Home_Index()
{
var controller = new HomeController();
var expected = "Index";
var actual = ((ViewResult)controller.Index()).ViewName;
Assert.AreEqual(expected, actual);
}
जाहिर है मैं इस अतिशयोक्तिपूर्ण व्यर्थ उदाहरण के साथ विरोध कर रहा हूँ, लेकिन किसी को भी यहाँ जोड़ने के लिए कोई ज्ञान है?
इसके लिए तत्पर ... धन्यवाद।