2010-04-29 20 views
11

मेरे पास एक जूनिट टेस्ट विधि है जो एक CommonsMultipartFile ऑब्जेक्ट को पैरामीटर के रूप में लेती है।CommonsMultipartFile ऑब्जेक्ट को कैसे बनाया जाए केवल एक फ़ाइल

मैं एक FileItem वस्तु बनाने के लिए तो मैं यह निर्माता को पारित कर सकते हैं कोशिश कर रहा हूँ

,

CommonsMultipartFile(org.apache.commons.fileupload.FileItem fileItem) 

कि ऐसा करने के लिए, मैं DiskFileItem निर्माता का उपयोग कर FileItem वस्तु बनाने के लिए कोशिश कर रहा हूँ,

DiskFileItem(java.lang.String fieldName, java.lang.String contentType, boolean isFormField, java.lang.String fileName, int sizeThreshold, java.io.File repository) 

लेकिन मुझे यकीन नहीं है कि इनमें से किसी भी पैरामीटर को कैसे पास किया जाए।

मेरे पास यह सब स्प्रिंग 3 एमवीसी नियंत्रक में काम कर रहा है, लेकिन मेरे जूनिट परीक्षण करने के लिए, मुझे दो ऑब्जेक्ट्स को एक विधि पारित करने की आवश्यकता है। एक UploadItem वस्तु जो निम्नलिखित की तरह दिखता है,

import org.springframework.web.multipart.commons.CommonsMultipartFile; 

public class UploadItem { 
private String fileName; 
private String filePath; 
private CommonsMultipartFile fileData; 

public String getFileName() { 
    return fileName; 
} 

public void setFileName(String fileName) { 
    this.fileName = fileName; 
} 

public String getFilePath() { 
    return filePath; 
} 

public void setFilePath(String filePath) { 
    this.filePath = filePath; 
} 

public CommonsMultipartFile getFileData() { 
    return fileData; 
} 

public void setFileData(CommonsMultipartFile fileData) { 
    this.fileData = fileData; 
} 
} 

setFileData() विधि जो मैं बस अपना src/परीक्षण/संसाधन निर्देशिका में एक फ़ाइल दिया बनाने के लिए कोशिश कर रहा हूँ CommonsMultipartFile वस्तु की आवश्यकता है।

क्या कोई यह जानता होगा कि मैं फ़ाइल कैसे ले सकता हूं, FileItem ऑब्जेक्ट बना सकता हूं और इसे CommonsMultipartFile ऑब्जेक्ट कन्स्ट्रक्टर को पास कर सकता हूं?

धन्यवाद। अगर कुछ अस्पष्ट है, तो कृपया मुझे बताएं - मैं स्प्रिंग एमवीसी फ़ाइल अपलोड से परिचित नहीं हूं।

उत्तर

30

अधिक सामान्य इंटरफ़ेस org.springframework.web.multipart.MultipartFile का उपयोग करें। आपके कमान (अपलोडइटम) में org.springframework.web.multipart.commons.CommonsMultipartFile के बजाय। (CommonsMultipartFile इंटरफ़ेस का 1: 1 कार्यान्वयन है)।

अब आप नकली कक्षा org.springframework.mock.web.MockMultipartFile के साथ CommonsMultipartFile का उदाहरण बना सकते हैं। (जो spring-test.jar का तत्व है)।

फिर परीक्षण में एक MultipartFile के निर्माण, केवल एक बयान है किसी भी डाली बिना:

MockMultipartFile mockMultipartFile = new MockMultipartFile(
     "test.txt",    //filename 
     "Hallo World".getBytes()); //content 
0

कैसे किसी भी मदद की है? आप अनुरोध पर फ़ाइल सेट नहीं है, इसे इस तरह इस्तेमाल किया जाना चाहिए:

MultipartFile multipartFile = getMockCommonsMultipartFile(BULK_CSV); 
MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); 
request.addFile(multipartFile); 
CommonsMultipartFile commonsMultipartFile = (CommonsMultipartFile) request.getFile(BULK_CSV); 

मैं तर्क CommonsMultipartFile के साथ एक विधि का उपयोग कर रहा है, अन्यथा मैं MockMultipartFile सीधे इस्तेमाल किया जा सकता था।

private MultipartFile getMockCommonsMultipartFile(String name, String path) throws IOException { 
     InputStream is = getClass().getResourceAsStream(path); 
     MultipartFile multipartFile = new MockMultipartFile(name, name, "", is); 
     return multipartFile; 
    } 
संबंधित मुद्दे