Clearly I'm not using this test fixture right. My servlet works just fine in tomcat, but when I try to use this mock, the multi-part boundary is not found. "the request was rejected because no multipart boundary was found".
There is an answer here that shows how to use this using a text file, but that answer sets the boundary string explicitly and embeds the file as test. I would think I would not need to do with by hand with methods like mockrequest.addFile(...)
What am I not setting here or how I am doing this wrong?
@org.testng.annotations.Test
public void testDoPost() throws Exception
{
MockMultipartFile file = new MockMultipartFile("test.zip", "test.zip", "application/zip", MyServletTest.class.getResourceAsStream("/test.zip"));
MockMultipartHttpServletRequest mockRequest = new MockMultipartHttpServletRequest();
mockRequest.addFile(file);
mockRequest.set
mockRequest.setMethod("POST");
mockRequest.setParameter("variant", "php");
mockRequest.setParameter("os", "mac");
mockRequest.setParameter("version", "3.4");
MockHttpServletResponse response = new MockHttpServletResponse();
new MyServletTest().doPost(mockRequest, response);
// BOOM !
}
Here is the exception
Caused by: blablah: the request was rejected because no multipart boundary was found
Great answer for Samuel, but a bug:
should be:
Thanks for his work very much.
Vote up for Samuel. Though spent one day trying to make it working. The problem was in:
Should be:
You need to set the boundary.
Here there is a good explanations about what is the boundary https://stackoverflow.com/a/10932533/2762092
To solve your problem try this code.
Able to add multiple fields ,