您应该使用callAction来与FormUrlEnpredBody一起使用
@Testpublic void testMyAction() { running(fakeApplication(), new Runnable() { public void run() { Map<String,String> data = new HashMap<String, Object>(); data.put("param1", "test-1"); data.put("param2", "test-2"); data.put("file", file); Result result = callAction( controllers.whatever.action(), fakeRequest().withFormUrlEnpredBody(data) ) ... } }}我只将Scala api用于Play framework 2,但我认为您不能使用withFormUrlEnpredBody测试多部分表单。
您可以在Scala中以这种方式进行操作:
import play.api.libs.Files._import play.api.mvc.MultipartFormData._class MyTestSpec extends Specification { "mytest should bla bla bla" in { running(FakeApplication(aditionalConfiguration = inMemoryDatabase())) { val data = new MultipartFormData(Map( ("param1" -> Seq("test-1")), ("param2" -> Seq("test-2")) ), List( FilePart("payload", "message", Some("Content-Type: multipart/form-data"), play.api.libs.Files.TemporaryFile(new java.io.File("/tmp/pepe.txt"))) ), List(), List()) val Some(result) = routeAndCall(FakeRequest(POST, "/route/action", FakeHeaders(), data)) ... } }}我想您可以将其转换为Java,对不起,我不知道如何用Java对其进行编码。
PD:对不起,我还在学习英语



