scala - 如何在Play框架(使用Scala的2.0版)中测试期望上传文件的操作?

标签 scala playframework playframework-2.0 functional-testing

该文档的Writing functional tests部分非常精简,并且缺少有关完全提交模拟表单值的详细信息。我以某种方式(不记得如何/在哪里)确定可以通过将Map传递给FakeRequest来提交基本表单值(模拟POST请求):

val Some(result) = routeAndCall(FakeRequest(POST, "/path/to/test", FakeHeaders(),
                                Map("postedVariable" -> Seq("and a value"))))

但是,这似乎不允许“已上传”文件的情况。

最佳答案

我们的文件上传测试如下所示:

val tempFile = TemporaryFile(new java.io.File("/tmp/the.file"))
val part = FilePart[TemporaryFile](key = "image", filename = "the.file", contentType = Some("image/jpeg"), ref = tempFile)
val formData = MultipartFormData(dataParts = Map(), files = Seq(part), badParts = Seq(), missingFileParts = Seq())
val result = routeAndCall(FakeRequest(POST, "/path/to/test", FakeHeaders(), formData))

其中"image"是您希望在其中查找文件内容的HTML表单元素的名称。

如果您使用BodyParsers.maxLength限制上传的大小,则可以将formData替换为Right(formData)

关于scala - 如何在Play框架(使用Scala的2.0版)中测试期望上传文件的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13352618/

相关文章:

scala - 类型的表达式不符合预期的类型 B

hibernate - Scala 中的 JPA/Hibernate 元素集合

java - 使我的持久模型中的属性独一无二

java - Play! 的异步程度如何?框架

scala - 将文件从 sbt 插件复制到项目文件夹

Scala 喷雾客户端为 AKKA ActorRefFactory 定义隐式

scala - PlayWS 发布多部分表单数据

json - Play 2.1(scala) - 如何为 scala 枚举案例类编写 Format[T]

scala - IntelliJ 12 : Showing Play 2. 1/项目导航器中的 Scala 编译错误?

scala - 玩!从单独的 mongo 集合中选择项目的表单