我有这个方法
@RequestMapping(value = "/upload", method = RequestMethod.POST, produces = "text/plain")
@ResponseBody
public String uploadFile(@RequestParam("file") MultipartFile file) {
LOGGER.debug("Attempt to upload file with template.");
try {
return FileProcessUtils.processFileUploading(file);
} catch (UtilityException e) {
LOGGER.error("Failed to process file.", e.getWrappedException());
return null;
}
}
我想使用junit
和powermock
来测试它。
@Test
public void testUploadFile() {
MultipartFile file = buildMultipartFile();
mockStatic(FileProcessUtils.class);
FileProcessUtils.processFileUploading(file);
expectLastCall().andReturn(FILE_CONTENT);
replay(FileProcessUtils.class);
String fileContent = templateSupportRest.uploadFile(file);
verify(FileProcessUtils.class);
assertEquals(FILE_CONTENT, fileContent);
}
但问题是我需要以某种方式将MultipartFile
对象传递给特定的FILE_CONTENT
。
为此,我需要构建MultipartFile
的实例。
private MultipartFile buildMultipartFile() {
DiskFileItem diskFileItem = new DiskFileItem("file", "text/plain", true, "file", 100, null);
MultipartFile file = new CommonsMultipartFile(diskFileItem);
return file;
}
但是我遇到了DiskFileItem
对象的问题。当我像这样创建它时,我在NullPointerException
对象的getSize()
方法中得到DiskFileItem
。
DiskFileItem
本身的构造函数具有此参数
String fieldName,
String contentType,
boolean isFormField,
String fileName,
int sizeThresold,
File repository
所以问题是 - 如何实例化DiskFileItem
还是有另一种方法来处理这种情况?