我目前正在嘗試測試一些代碼,我在一個Web應用程序中接受一個HTTP多部分/表單請求,並將其轉換爲稍後可以使用的FileItems列表。這裏是方法:如何模擬與Apache公共的ServletFileUpload兼容的HTTP請求?
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來創建一個multipart請求,它的工作原理是成功創建了一個MultipartRequestEntity,但我不確定如何在upload()中使用它,因爲它涉及兩種不同的對象類型。可能嗎?我可以採取哪些步驟來成功模擬請求對象?