Test MultipartFormData in Play 2.0 FakeRequest

前端 未结 4 1719
自闭症患者
自闭症患者 2020-12-05 12:49

I\'m trying to create a function test for a Play 2 controller which takes multipart form data as input. There is no method currently in FakeRequest to support multipart form

4条回答
  •  爱一瞬间的悲伤
    2020-12-05 13:05

    Here is a solution with callAction() in Java to create the multipart/form-data content for a request. It works at least in Play 2.2.3. My content-type was application/zip. You might want to change this.

    @Test
    public void callImport() throws Exception {
        File file = new File("test/yourfile.zip");
        FilePart part = new MultipartFormData.FilePart<>(
                "file", "test/yourfile.zip",
                Scala.Option("application/zip"), new TemporaryFile(file));
        List> fileParts = new ArrayList<>();
        fileParts.add(part);
        scala.collection.immutable.List> files = scala.collection.JavaConversions
                .asScalaBuffer(fileParts).toList();
        MultipartFormData formData = new MultipartFormData(
                null, files, null, null);
        AnyContent anyContent = new AnyContentAsMultipartFormData(formData);
    
        Result result = callAction(
                controllers.routes.ref.ImportExport.import(),
                fakeRequest().withAnyContent(anyContent,
                        "multipart/form-data", "POST"));
    
        // Your Tests
        assertThat(status(result)).isEqualTo(OK);
    }
    

提交回复
热议问题