在播放2.1序列化多重表单请求进行测试(Serializing Multipart Form req

2019-08-17 03:05发布

我正在play2.1编写使用了利用路由功能多形式后控制器的测试。

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

我发现这段代码工作,我需要定义这种类型的可写[MultipartFormData [TemporaryFile]因为我的身体变量的类型的MultipartFormData [TemporaryFile]的写。 我不知道如何序列multipart请求,或者如果这是连正确的做法。 有什么建议?

编辑

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

Answer 1:

  • 你有两个选择,searializing MultiPartFormData这是(据我可以告诉)相当棘手的事情。 这篇文章可以帮助: https://groups.google.com/forum/?fromgroups=#!topic/play-framework/MPtQlX-cWMQ
  • 您可以跳过会虽然route方法。 如果你想测试Action在你的控制器,你可以简单地绕过路线。 参见测试你的控制器的文件中。 如果不通过路由器,你并不需要提供一个Writable 。 它很少需要去通过基本上让你先写为字节(使用路由器Writer ),然后(用身体解析器),以玩的东西理解其转换回。


Answer 2:

如果你不想跳过路由,需要一个可写的[AnyContentAsMultipartFormData],果然MultipartFormData [TemporaryFile]到数组[字节]。

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



文章来源: Serializing Multipart Form requests for testing on Play 2.1