播放FakeMultipartRequest意外结束输入

时间:2017-04-09 12:43:00

标签: scala testing multipart playframework-2.5

我正在测试我的控制器。

我有以下测试代码来测试一个简单的csv上传,当我尝试从一些简单的休息客户端上传时,文件存在并且端点工作

我得到:400意外结束输入。

尝试了我能想到的一切。感谢

    val controller = application.injector.instanceOf[MyController]
    val file = play.api.libs.Files.TemporaryFile(FileUtils.toFile(getClass.getResource(MyCSV)))
    val data = new MultipartFormData(Map(), List(
      FilePart("file", "sample.csv", Some("application/csv"), file)
    ), List())
    def fakeMultipartRequest: FakeRequest[AnyContentAsMultipartFormData] = FakeRequest(HttpVerbs.POST, "/upload")
      .withHeaders(("Content-Type", "multipart/form-data; boundary=***boundry***"))
      .withMultipartFormDataBody(data)  
    val result = call(controller.upload(), fakeMultipartRequest)
    val str = contentAsString(result)
    status(result) shouldBe OK

我的控制器很简单:

def upload() = Action.async(parse.multipartFormData) { implicit request => ...

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。在我的情况下,这是由于一些自定义Filter从请求中读取令牌并将其解析为json。看看你使用的过滤器

答案 1 :(得分:0)

我遇到了同样的问题,发现您需要设置dataParts的{​​{1}}属性:

MultipartFormData

这样,我也不必设置content-type / boundary标头。