我有一个JUnit测试方法,它将CommonMultipartFile对象作为参数。
我正在尝试创建一个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)

但我不知道如何传递这些参数。
我在Spring3MVC控制器中完成了所有这些工作,但是要进行JUnit测试,我需要传递一个方法2对象。一个是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()方法需要commonmultipartfile对象,我正试图在我的src/test/resources目录中创建一个给定的文件。
有人知道我如何获取一个文件、创建一个fileitem对象并将其传递给commonmultipartfile对象构造函数吗?
谢谢。如果有什么不清楚的地方,请告诉我——我不太熟悉SpringMVC文件上传。

最佳答案

使用更常见的界面。而不是
org.springframework.web.multipart.MultipartFile在您的命令中(uploadItem)。(CommonMultipartFile是接口的1:1实现)。
现在,您可以使用模拟类创建org.springframework.web.multipart.commons.CommonsMultipartFile的实例。(这是CommonsMultipartFile的元素)。
那么,在测试中创建一个多部分文件只是一个语句,没有任何强制转换:

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

09-30 15:00
查看更多