2011-04-01 14 views
9

हैलो मैं टीडीडी विकास में नया हूं।
मैं Using asp.net mvc to upload file
फिल Haack के लिए इस पोस्ट में आए कहा गया है कि एक वर्ग फ़ाइल अपलोड नियंत्रण के लिए इस्तेमाल किया जा सकता है, जिसमें उन्होंने डिफ़ॉल्ट HttpFileCollectionValueProvider का उपयोग करें:यूनिट परीक्षण कैसे करें Asp.net एमवीसी फ़ाइल अपलोड करें

 
[HttpPost] 
public ActionResult Index(HttpPostedFileBase file) { 

    if (file.ContentLength > 0) { 
    var fileName = Path.GetFileName(file.FileName); 
    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
    file.SaveAs(path); 
    } 

    return RedirectToAction("Index"); 
}

मूल्य

के रूप में एक के रूप में घिरा है
<form action="" method="post" enctype="multipart/form-data"> 
    <label for="file">Filename:</label> 
    <input type="file" name="file" id="file" /> 
    <input type="submit" /> 
</form> 

ध्यान दें कि एचटीपीपोस्टेडफाइलबेस को एचटीएमएल फॉर्म में "फ़ाइल" नाम के साथ नियंत्रक में पैरामीटर के रूप में पार्स किया गया है और इंडेक्स नियंत्रक में पार्सिंग पैरामीटर के रूप में पार्स किया गया है।

मेरे दो प्रश्न हैं:
1. मैं फ़ाइल को कैसे सत्यापित कर सकता हूं। सेवए विधि?
2. मुझे पूरा यकीन नहीं है कि इस के साथ इकाई परीक्षण कैसे करें। परीक्षण नियंत्रक फ़ाइल में मेरे पास एक नकली HttpPostedFileBase होना चाहिए लेकिन यह मुहरबंद है। क्या किसी के पास इससे निपटने के लिए कुछ रणनीतियां हैं?

बहुत बहुत धन्यवाद!

+0

इसे आज़माएं: [एएसपी.नेट एमवीसी: मोक के साथ यूनिट टेस्ट फ़ाइल अपलोड] (http://csainty.blogspot.com/2009/01/aspnet-mvc-unit-test-file-upload-with.html) –

+0

आपके उत्तर के लिए धन्यवाद। समस्या यह है कि मसीह के पद में उन्होंने नियंत्रक में पैरामीटर के रूप में HttpPostedFileBase को पार्स नहीं किया। हालांकि, फिल की विधि में नियंत्रक को HttpPostedFileBase को पैरामीटर के रूप में ले जाना चाहिए जो HttpFileCollectionValueProvider से घिरा हुआ है। तो यह यूनिट परीक्षण के साथ मेरी समस्या है ... – Seen

उत्तर

7

मेरे क्षमायाचना अगर यह नहीं है कि तुम क्या कह रहे हैं, लेकिन मैं बस अपने परीक्षण में HttpPostedFileBase नकली होगा:

var file = MockRepository.GenerateStub<HttpPostedFileBase>(); 

और उसके बाद किसी भी अपेक्षाएं निर्धारित:

file.Expect(f => f.ContentLength).Return(1); 
file.Expect(f => f.FileName).Return("myFileName"); 

तो यह पारित आपकी नियंत्रक विधि:

controller.Index(file); 

ताकि आप अपनी फ़ाइल के व्यवहार का नकल कर सकें। मुझे एसएवीएएस के बारे में निश्चित नहीं है - क्या आपने इस विधि को ओवरराइड किया है?

+0

आपके उत्तर के लिए धन्यवाद। मुझे पता है कि समस्या यह है कि मैंने मोक के लिए सही भंडार स्थापित नहीं किया था। मैंने Moq के लिए दस्तावेज़ को देखा और सही कोड प्राप्त किए। – Seen

संबंधित मुद्दे