2012-10-19 33 views
7

मैं समझता हूँ कि आप इस स्काला एपीआई का उपयोग कर के रूप में यहाँ का सुझाव दिया ऐसा कर सकते हैं:जावा का उपयोग कर प्ले फ्रेमवर्क 2.0 में फ़ाइल अपलोड के लिए मल्टीपार्ट फॉर्म डेटा अनुरोधों का परीक्षण कैसे करूं?

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

लेकिन इस जावा का उपयोग कर कर के रूप में केवल स्ट्रिंग मान FakeRequests 'withFormUrlEncodedBody विधि में समर्थित हैं का कोई रास्ता नहीं हो रहा है?

क्या यह एपीआई में एक गायब विशेषता है या क्या कोई कामकाज है? (केवल जावा का उपयोग कर)।

+0

इसके अलावा ऐसा करने के तरीके पर एक उदाहरण के लिए देख रहा । – MartinGrotzke

उत्तर

2

एकीकरण परीक्षण के लिए की तरह मैं क्या आप अपाचे DefaultHttpCLient उपयोग कर सकते हैं:

@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); 
} 

यह जरूरी है कि आप अपने परीक्षण में एक सर्वर शुरू:

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); 
}