Ich versuche einen Funktionstest für einen Play 2 Controller zu erstellen, der mehrteilige Formulardaten als Eingabe akzeptiert. Es gibt derzeit keine Methode in FakeRequest, um mehrteiliges Formular-POST zu unterstützen. Welche anderen Möglichkeiten, diesen Controller zu testen?MultipartFormData in Play 2.0 testen 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: Dies ist die Abhilfe, die ich tat mehrt zu testen.
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();
}
Warum callaction für withFormUrlEncodeBody erforderlich ist? routeAndCall sollte ebenfalls funktionieren. routeAndCall (fakeRequest (POST, "/route").withFormUrlEncodedBody (map)); – angelokh
Mutlipartformdata könnte für scala with you-Methode funktionieren. Für java würde withFormUrlEncodedBody jedoch keine Map mit Wert im Objekttyp zulassen. – angelokh
Ich weiß nicht, warum callAction auf Java-Flavor benötigt wird, aber es scheint, als ob man nur fakeRequest() aufrufen kann. WithFormUrlEncodeBody mit callAction, ich weiß sowieso nicht viel über Java, also kann ich völlig falsch liegen. Ich denke nicht, dass Sie mitFormUrlEncodedBody verwenden müssen, um Ihre Multipart zu testen, Sie sollten nur die richtige POST-Anfrage erstellen. – DamnWidget