2

我正在使用 play2.1 为使用路由功能的多部分表单的后控制器编写测试。

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

我发现要使这段代码正常工作,我需要定义这种类型的 Writeable [MultipartFormData[TemporaryFile]],因为我的主体变量是 MultipartFormData[TemporaryFile] 类型。我不确定如何序列化多部分请求,或者这是否是正确的方法。有什么建议么?

已编辑

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

4

2 回答 2

2
  • 你有两个选择,序列化MultiPartFormData(据我所知)非常棘手。这篇文章可能会有所帮助:https ://groups.google.com/forum/?fromgroups=#!topic/play-framework/MPtQlX-cWMQ
  • 您可以跳过该route方法。如果你想Action在你的控制器中测试,你可以简单地绕过路由。请参阅文档中的测试控制器。如果您不通过路由器,则无需提供Writable. 很少需要通过路由器,它基本上让您首先将其写入字节(使用Writer),然后(使用正文解析器)将其转换回 Play 可以理解的内容。
于 2013-02-21T22:53:51.110 回答
0

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

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

于 2015-07-31T02:50:32.463 回答