尝试测试一个播放控制器,但是抓住了他们超级聪明的元编程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))
....
我希望在测试显示的另一边可以使用字符串或其他东西。另外,我知道控制器工作正常。