Ben*_*ser 2 java junit web-services mockito mime-message
我对Mockito很陌生并嘲笑servlet进行测试.我在模拟出一个HttpServletRequest时遇到了问题,它将一些表单数据作为MimeMultiPart发送到我的servlet.在我的servlet中,我调用request.getInputStream()
如下:
mimeMultiPart = new MimeMultipart(new ByteArrayDataSource(
request.getInputStream(), Constants.MULTI_PART_FORM_DATA));
Run Code Online (Sandbox Code Playgroud)
当我模拟我的输入流时,我创建了一个完整的MimeMultiPart消息,然后我尝试从下面的代码中返回一个ServletInputStream
//Helper function to create ServletInputStream
private ServletInputStream createServletInputStream(Object object)
throws Exception {
//create output stream
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream outStream = new ObjectOutputStream(byteOut);
//this part no workey
outStream.writeObject(object);
//create input stream
final InputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
//create a new ServletInputStream and return it
return new ServletInputStream() {
@Override
public int read() throws IOException {
return byteIn.read();
}
};
}
@Test
public void testDoPost() throws Exception {
PrintWriter writer;
writer = new PrintWriter("testSendMultiPartBatchResponse.txt");
when(response.getWriter()).thenReturn(writer);
//this is the mocked request
when(request.getInputStream()).thenReturn(
createServletInputStream(multiPartResponse));
. . .
Run Code Online (Sandbox Code Playgroud)
现在,当我运行此测试时,我收到以下错误outStream.writeObject(object)
:
java.io.NotSerializableException: javax.mail.internet.MimeMultipart
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
. . .
Run Code Online (Sandbox Code Playgroud)
没有必要发布堆栈跟踪的其余部分,我很确定问题是MimeMultiPart不可序列化,但我不知道如何纠正这个问题.有没有其他方法来模拟请求?我很茫然 :(
我认为这应该有效:
final ByteArrayOutputStream os = new ByteArrayOutputStream ();
multiPartResponse.writeTo (os);
final ByteArrayInputStream is = new ByteArrayInputStream (os.toByteArray ());
when(request.getInputStream()).thenReturn(new ServletInputStream() {
@Override
public int read() throws IOException {
return is.read();
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3493 次 |
最近记录: |