小编Mik*_*e S的帖子

使用MockMultipartHttpServletRequest进行单元测试(在ItemInputStream.makeAvailable中抛出NullPointerException)

我编写了一个转换器类,它接受HttpServletRequest并将其转换为另一种类型,该类型保存来自servlet请求的InputStream指针.(我的想法是从请求处理中抽象出传输传输协议,所以我也可以从FTP编写类似的转换器.)

现在我正在尝试为此编写一个单元测试,我遇到了问题.我已经设法找出正确的样板来创建一个有效的Multipart HTTP请求(使用Spring类MockMultipartHttpServletRequest和MockMultipartFile),但现在我在initialize()我的UploadRequest类的方法中得到一个NullPointerException .我猜测问题是,MockMultipartHttpServletRequest中的流不能正确初始化,但我无法弄清楚我应该做些什么不同.

任何建议都会感激不尽!

这是堆栈跟踪:

java.lang.NullPointerException
    at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:976)
    at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886)
    at java.io.InputStream.read(InputStream.java:82)
    at org.apache.commons.fileupload.util.Streams.copy(Streams.java:96)
    at org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
    at org.apache.commons.fileupload.MultipartStream.readBodyData(MultipartStream.java:592)
    at org.apache.commons.fileupload.MultipartStream.discardBodyData(MultipartStream.java:618)
    at org.apache.commons.fileupload.MultipartStream.skipPreamble(MultipartStream.java:637)
    at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:984)
    at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:965)
    at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
    at org.apache.commons.fileupload.servlet.ServletFileUpload.getItemIterator(ServletFileUpload.java:148)
    at com.ooyala.UploadRequest.initialize(UploadRequest.java:51)
    at com.ooyala.UploadRequestTest.testCreateFromServletRequest(UploadRequestTest.java:57)
Run Code Online (Sandbox Code Playgroud)

这是我的变压器类的缩写版本:

public class UploadRequest {
  private Map<String, String> params;
  private InputStream strIn;
  private Logger Log = Logger.getLogger(UploadRequest.class.getName());

  public UploadRequest()
  {
    params = new HashMap<String, String>();
  }

  public void initialize(HttpServletRequest sRequest, 
                         ServletFileUpload upload)
    throws IOException, FileUploadException
  {
    Enumeration<String> paramNames = sRequest.getParameterNames();
    while …
Run Code Online (Sandbox Code Playgroud)

java junit spring unit-testing jmock

7
推荐指数
1
解决办法
6887
查看次数

标签 统计

java ×1

jmock ×1

junit ×1

spring ×1

unit-testing ×1