我有一个junit测试方法,它将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)
但我不确定如何传递任何这些参数。
我所有这些都在Spring 3 MVC控制器中工作,但是为了进行junit测试,我需要传递一个方法两个对象。一个是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()方法需要CommonsMultipartFile对象,我试图在src / test / resources目录中创建一个文件。
有谁知道如何获取文件,创建FileItem对象并将其传递给CommonsMultipartFile对象构造函数?
感谢。如果有什么不清楚的地方,请告诉我 - 我不熟悉Spring MVC文件上传。
答案 0 :(得分:31)
使用更常见的界面org.springframework.web.multipart.MultipartFile
。代替
您的命令(UploadItem)中的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
答案 1 :(得分: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;
}