CommonsMultipartFileオブジェクトをパラメーターとして受け取るjunitテストメソッドがあります。
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)
しかし、これらのパラメーターのいずれかを渡す方法がわかりません。
私はこれらすべてをSpring3 MVCコントローラーで機能させていますが、junitテストを実行するには、メソッド2つのオブジェクトに合格する必要があります。 1つは次のような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/test/resourcesディレクトリにファイルを指定して作成しようとしているCommonsMultipartFileオブジェクトが必要です。
ファイルを取得してFileItemオブジェクトを作成し、それをCommonsMultipartFileオブジェクトコンストラクターに渡す方法を知っている人はいますか?
ありがとう。不明な点がある場合は、お知らせください。SpringMVCファイルのアップロードについてはあまり詳しくありません。
より一般的なインターフェースを使用してください 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の作成は、キャストなしの1つのステートメントのみです。
MockMultipartFile mockMultipartFile = new MockMultipartFile(
"test.txt", //filename
"Hallo World".getBytes()); //content
これはどのように役立ちますか?リクエストに応じてファイルを設定しないでください。次のように使用する必要があります。
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;
}