7

Ich verstehe, dass Sie dies mit dem Scala API tun können, wie hier vorgeschlagen:Wie kann ich mehrteilige Formulardatenanforderungen für Dateiuploads in Play Framework 2.0 mit Java testen?

https://groups.google.com/forum/?fromgroups=#!topic/play-framework/1vNGW-lPi9I

Aber es scheint keine Möglichkeit, dies zu tun mit Java zu sein als nur String-Werte in FakeRequests' withFormUrlEncodedBody Methode unterstützt?

Ist dies ein fehlendes Feature in der API oder gibt es eine Problemumgehung? (Nur mit Java).

+0

Auch auf der Suche für ein Beispiel, wie dies zu tun . – MartinGrotzke

Antwort

2

Für Integrationstests können Sie Apache DefaultHttpCLient verwenden wie ich:

@Test 
public void addFileItem() throws Exception { 
    File testFile = File.createTempFile("test","xml"); 
    DefaultHttpClient httpclient = new DefaultHttpClient(); 
    HttpPost method = new HttpPost(URL_HOST + "/api/v1/items/file"); 
    MultipartEntity entity = new MultipartEntity(); 
    entity.addPart("description", new StringBody("This is my file",Charset.forName("UTF-8"))); 
    entity.addPart(Constants.ITEMTYPE_KEY, new StringBody("FILE", Charset.forName("UTF-8"))); 
    FileBody fileBody = new FileBody(testFile); 
    entity.addPart("file", fileBody); 
    method.setEntity(entity); 

    HttpResponse response = httpclient.execute(method);    
    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(CREATED); 
} 

Dies erfordert, dass Sie einen Server in Ihren Tests zu starten:

public static FakeApplication app; 
public static TestServer testServer; 

@BeforeClass 
public static void startApp() throws IOException { 
    app = Helpers.fakeApplication(); 
    testServer = Helpers.testServer(PORT, app); 
    Helpers.start(testServer); 

} 

@AfterClass 
public static void stopApp() { 
    Helpers.stop(testServer); 
}