Maven webappプロジェクトで、
「servlet.http.Partとinputされたファイルの拡張子(String)を引数に取り、画像データのBase64をStringで返すロジック」の、単体テストをしたいのですが、
どのような方法がありますか。
大元は、jspのから受け取った画像ファイルの取得をするプログラムです。
- Mockを使用
- SpringのMockHttpServletRequestを使う
- src/test/resourcesにテストファイルを作って読み込んだ情報をPartとして使う(?)
などを思いついたのですが、
1.=> NullPointerExceptionになる(MockなのでNullになるのはわかっている)
2.=> NoClassDefFoundErrorになる
3.=> Partとして使う方法がわからないので試していない
で行き詰まっています。
Springは全く詳しくないのですが、このような状況下で部分的に使用するには、
別途設定クラスなどが必要でしょうか?
上記中で、そもそも間違っている点、考えられる方法のヒントがあれば
ご教示いただけると幸いです。
よろしくお願いします。
Logic
public String execute64(Part part,String suffix) throws IOException {
try(BufferedInputStream br=new BufferedInputStream(part.getInputStream(),(int)part.getSize());
ByteArrayOutputStream bo=new ByteArrayOutputStream()){
int count=0;
byte[] buf=new byte[(int)part.getSize()];
while((count=br.read(buf)) != -1) {
bo.write(buf,0,count);
}
String base64=new String(Base64.encodeBase64(bo.toByteArray()),"ASCII");
StringBuffer sb=new StringBuffer();
sb.append("data:image/").append(suffix).append(";base64,").append(base64);
return sb.toString();
}
}