Я пытаюсь создать функциональный тест для контроллера Play 2, который принимает данные из нескольких форм в качестве входных данных. В настоящее время в FakeRequest нет метода поддержки многостраничного POST. Какие еще способы тестирования этого контроллера?Test MultipartFormData in Play 2.0 FakeRequest
Map<String, Object> map = new HashMap<String, Object>();
map.put("param1", "test-1");
map.put("param2", "test-2");
map.put("file", file)
Result result = routeAndCall(fakeRequest(POST, "/register").withFormUrlEncodedBody(map));// NO SUCH METHOD
EDIT: Это обходной путь я сделал, чтобы проверить Multipart.
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://localhost:3333/blobupload");
FileBody imageFile = new FileBody(new File("test/resources/test-1.jpg"));
StringBody guid1 = null;
StringBody guid2 = null;
try {
guid1 = new StringBody("GUID-1");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("key1", imageFile);
reqEntity.addPart("key2", guid1);
httppost.setEntity(reqEntity);
HttpResponse response;
try {
response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
assertThat(response.getStatusLine().getStatusCode()).isEqualTo(200);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Почему CallAction требуется для withFormUrlEncodeBody? routeAndCall также должен работать. routeAndCall (fakeRequest (POST, "/route").withFormUrlEncodedBody(map)); – angelokh
Mutlipartformdata может работать для scala с вами методом. Тем не менее, для java, сFormUrlEncodedBody не позволит карте со значением в Тип объекта. – angelokh
Я не знаю, почему callAction требуется для Java-вкуса, но похоже, что вы можете вызывать только fakeRequest(). WithFormUrlEncodeBody с callAction, во всяком случае, я мало знаю о языке Java, поэтому я могу быть совершенно неправ. Я не думаю, что вам нужно использовать withFormUrlEncodedBody для тестирования вашего multipart, вы должны только создать правильный запрос POST. – DamnWidget