在Play 2.1上序列化Multipart Form请求进行测试

时间:2013-02-21 22:08:28

标签: scala playframework-2.0 multipartform-data

我正在研究play2.1为使用路径功能的多部分表格的后置控制器编写测试。

route(
  FakeRequest(POST,
    postControllerRoute().url,
    FakeHeaders(Seq(HeaderNames.CONTENT_TYPE -> Seq("multipart/form-data"))),
    body = body
  ).withAuthToken.withAdmin(adminId))

我发现为了使这个代码工作,我需要定义一个可写的可写类型[MultipartFormData [TemporaryFile]],因为我的body变量是MultipartFormData [TemporaryFile]类型。我不确定如何序列化多部分请求或者这是否是正确的方法。有什么建议吗?

被修改

答案:跳过路由器并直接使用控制器,如文档中所示:http://www.playframework.com/documentation/2.1.0/ScalaFunctionalTest

2 个答案:

答案 0 :(得分:2)

  • 你有两个选择,将MultiPartFormData searializing(据我所知)是非常棘手的。这篇文章可能有所帮助:https://groups.google.com/forum/?fromgroups=#!topic/play-framework/MPtQlX-cWMQ
  • 您可以跳过route方法。如果要测试控制器中的Action,可以简单地绕过该路径。请参阅文档中的Testing your Controllers。如果您不通过路由器,则无需提供Writable。很少需要通过路由器,这实际上让你首先把它写成字节(使用Writer),然后(使用正文解析器)将其转换回Play理解的东西。

答案 1 :(得分:0)

如果你不想跳过路由,你需要一个可写的[AnyContentAsMultipartFormData],它将MultipartFormData [TemporaryFile]变成Array [Byte]。

这里有一个可写的[AnyContentAsMultipartFormData]:http://tech.fongmun.com/post/125479939452/test-multipartformdata-in-play