Play Framework:使用maxLength中包含的临时文件操作排除FakeRequest

时间:2014-06-06 11:32:06

标签: scala testing playframework playframework-2.2

尝试测试一个播放控制器,但是抓住了他们超级聪明的元编程tar-pit。

如何将FakeRequest与包含maxLength的临时文件解析操作对齐? :

trait FileActionUtils { self : Controller =>
  implicit class ByteSizeHelper(base : Int) {
    def KB = base * 1024
    def MB = base * 1024 * 1024
  }

  def singleSizeCappedFileAction(size: Int, filename: String)(fileHandler : (File) => Result) = {
    Action(maxLength(size, parser = parse.multipartFormData)) {
      _.body match {
        case Right(body) =>
          body.file(filename) match {
            case Some(file) =>
              fileHandler(file.ref.file)
            case None =>
              BadRequest.withHeaders("message" -> "\"file\" not encoded in multipart body.")
          }
        case Left(error) =>
          BadRequest.withHeaders("message" -> "file is too large.")
      }
    }
  }
}

我在尝试什么:

  ....
  val body = new MultipartFormData(Map(),
    List(
      FilePart("file", "file1.mpp", Some("Content-Type: multipart/form-data"),   TemporaryFile("test/fixtures/file1.mpp"))
    ),
    Nil,Nil
  )
  val request = FakeRequest().withMultipartFormDataBody(body)
  val result = controller.parseProjectFile("").apply(request)

  println(contentAsString(result))
  ....

我希望在测试显示的另一边可以使用字符串或其他东西。另外,我知道控制器工作正常。

0 个答案:

没有答案