我正在研究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
答案 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