我目前正在尝试测试我在 Web 应用程序中的一些代码,该应用程序接受 HTTP 多部分/表单请求并将其转换为我以后可以使用的 FileItems 列表。这是方法:
private HttpServletRequest request = null;
private List<FileItem> uploadedObjects = null;
/* getter/setter methods */
public void upload() throws FileUploadException {
ServletFileUpload upload = new ServletFileUpload(
new DiskFileItemFactory());
if (request == null) {
//do nothing - success is already false
} else if (ServletFileUpload.isMultipartContent(request)) {
uploadedObjects = upload.parseRequest(request);
success = true
}
}
问题是我在对这种方法进行单元测试时遇到了麻烦。我尝试使用 EasyMock 来模拟 HttpServletRequest,但为了模拟 ServletInputStream 的读取方法,您基本上必须重新实现 read()——必须有更简单的方法。
我尝试使用 commons-httpclient 3.0 创建一个多部分请求,它成功创建了一个 MultipartRequestEntity,但我不确定如何在 upload() 中使用它,因为它涉及两种不同的对象类型。是否可以?我可以采取哪些步骤来成功模拟请求对象?