मैं एक नई परियोजना (अच्छी तरह से, मौजूदा एक को पुनरारंभ करना) शुरू कर रहा हूं, और सभी लाभों के लिए टीडीडी (एनएचटी के लिए) को अपनाने की कोशिश कर रहा हूं।डिजाइन करने के लिए टीडीडीइंग एमवीसी नियंत्रक
मेरा मानना है कि टीडीडी के परिणामस्वरूप मुझे केवल उन कोडों को लिखने के लिए ड्राइविंग किया जाएगा जो मुझे लिखने की ज़रूरत है, लेकिन यह मुझे उस कोड को लिखने के लिए प्रेरित करेगा जिसे मुझे चाहिए और कुछ बाहर नहीं छोड़ें।
यह जहाँ मेरे अनिश्चितता की वर्तमान स्थिति में आता है
कहानी पर विचार करें:।
"एक उपयोगकर्ता ऐसा करने में वे नव का विवरण देखने के लिया जाता है, एक विजेट जोड़ने के लिए सक्षम होना चाहिए जोड़ा विजेट। "
ठीक है, इसलिए यूआई से काम करना (जैसे वह उपयोगकर्ता अपना विजेट जोड़ देगा, और विजुअल स्टूडियो और असेंबली के सेट का उपयोग नहीं करेगा) ... मैं निम्नलिखित परीक्षण से शुरू करता हूं, बहुत लिखता हूं न्यूनतम तो परीक्षण पास हो जाता है।
तो मैंने नियंत्रक के साथ एक नोटिम्प्लेटेड अपवाद को फेंकने के साथ शुरुआत की, फिर एक दृश्य() लौटाया ... निम्नलिखित बात यह थी कि मैंने टेस्ट पास करने के लिए सबसे छोटी लाइनें लिखी थीं।
[TestFixture]
public class WidgetControllerTester
{
[Test]
public void Create_IfBusinessModelIsValid_ReturnRedirectToRouteResultToDetailsAction()
{
// Arrange
var currentUser = new User
{
DisplayName = "Fred",
Email = "[email protected]",
Password = "pass",
Status = UserStatus.Active
};
var model = new WidgetModel();
var controller = new WidgetController();
// Act
var actionResult = controller.Create(currentUser, model);
// Assert
actionResult.AssertActionRedirect().ToAction("Details");
}
}
public class WidgetModel
{
}
public class WidgetController: Controller
{
public ActionResult Create()
{
return View("Create");
}
[HttpPost]
public ActionResult Create(User currentUser, Widget model)
{
return RedirectToAction("Details");
}
}
अब मुझे एहसास है कि अमान्य मॉडल के लिए अतिरिक्त परीक्षण और मॉडल राज्य की जांच अतिरिक्त कहानियों से विकसित होगी।
हालांकि मुझे नियंत्रक के भीतर और कोड चलाने के लिए अतिरिक्त परीक्षणों का लाभ उठाने का एक स्पष्ट मार्ग नहीं दिखाई दे रहा है।
उदाहरण के लिए, मुझे कुछ समय पता है कि मैं कार्यवाही से विजेट सेवा कॉल करना चाहता हूं। क्या मुझे कुछ स्पष्ट याद आ रहा है (पेड़ के सामान के लिए लकड़ी को देखने में सक्षम नहीं है) मैं अतिरिक्त परीक्षणों के साथ नियंत्रक कोड कैसे प्रगति कर सकता हूं?
विजेट सेवा के बारे में बात करते हुए, मुझे उम्मीद है कि मैं एक विजेट सेवापत्र लिखूंगा और नियंत्रक के भीतर संदर्भों के संदर्भ में अधिकतर मजाक किया जाएगा।
कुछ विचार मैं पड़ा है ...
- Create_IfModelIsValid_WidgetIsAddedToRepository नामक एक नया परीक्षण बनाएं, लेकिन कैसे यह स्पष्ट रूप से नियंत्रक कार्रवाई में सेवा कॉल पर नेतृत्व करता है?
- मुझे एक और विस्तृत कहानी लिखनी है जिसमें कहा गया है कि मॉडल को भंडार/डेटाबेस आदि में डालने की आवश्यकता है?
- क्या मैं टीडीडी और एक्सपी के तत्वों को जोड़ रहा हूं?
पढ़ने के लिए धन्यवाद, मैं प्रगति के लिए सर्वोत्तम अभ्यास के लिए किसी भी प्रतिक्रिया और अंतर्दृष्टि की सराहना करता हूं।
जो।
संपादित 27 फ़र, 2010
मैं निम्न आलेख पुनरावृत्ति # 6 मिला - (asp.net पर) का प्रयोग करें टेस्ट संचालित विकास (http://www.asp.net/%28S%28ywiyuluxr3qb2dfva1z5lgeg%29%29/learn/mvc/tutorial-31-cs.aspx) जो बात मैं के बाद था की तरह दर्शाता है, लेकिन वे लगते हैं नियंत्रक को पुन: फैक्टरिंग के रूप में भंडार/सेवा के अतिरिक्त पर विचार करने के लिए ... मैं व्यक्तिगत रूप से सहमत नहीं हूं, क्या मैं गलत हूं?:)
मैं एक परीक्षा लिखने के बारे में सोचने जा रहा हूं जो विवरण कार्रवाई के व्यूडेटा की जांच करता है और मेरे पास एक बार यह प्रश्न अपडेट करता है।