【问题标题】:scala test play parse.mulipartFormDatascala测试播放parse.mulipartFormData
【发布时间】:2017-02-07 00:58:04
【问题描述】:

尝试测试解析 multipartFormData 的播放函数

def requestBulkSiteSbcActionConfirm = Action.async(parse.multipartFormData) { request => ....

我创建的测试是

      val temporartyFile = TemporaryFile("test")
  val filePart = FilePart("key: String", "test.csv", None, temporartyFile)
  val multipartFormData: MultipartFormData[TemporaryFile] = MultipartFormData(Map(),Seq(filePart), Seq())
  val request: Request[AnyContentAsMultipartFormData] = FakeRequest().withHeaders(("Content-Type"->"multipart/form-data")).withMultipartFormDataBody(multipartFormData)
  val pw = new PrintWriter(filePart.ref.file)
  pw.write(s"$TestSiteId_1, ${AdLeft.id}, on\n")
  pw.write(s"$TestSiteId_2, ${AdRight.id}, off\n")
  pw.close()
  val acc: Accumulator[ByteString, Result] = controller.requestBulkSiteSbcActionConfirm().apply(request)

哪些例外

- valid file sbc command list *** FAILED ***
[info]   java.util.NoSuchElementException: None.get
[info]   at scala.None$.get(Option.scala:347) 
[info]   at scala.None$.get(Option.scala:345)
[info]   at play.api.mvc.BodyParsers$parse$$anonfun$multipartFormData$1.apply(ContentTypes.scala:657)
[info]   at play.api.mvc.BodyParsers$parse$$anonfun$multipartFormData$1.apply(ContentTypes.scala:656)
[info]   at play.api.mvc.BodyParser$$anon$8.apply(Action.scala:258)
[info]   at play.api.mvc.BodyParser$$anon$8.apply(Action.scala:257)
[info]   at play.api.mvc.Action$class.apply(Action.scala:103)
[info]   at play.api.mvc.ActionBuilder$$anon$2.apply(Action.scala:455)
[info]   at controllers.SbcConfigControllerTest$$anonfun$2$$anonfun$apply$mcV$sp$1.apply$mcV$sp(SbcConfigControllerTest.scala:64)
[info]   at controllers.SbcConfigControllerTest$$anonfun$2$$anonfun$apply$mcV$sp$1.apply(SbcConfigControllerTest.scala:55)

【问题讨论】:

    标签: scala playframework scalatest


    【解决方案1】:

    Play 的一些内部部分仍然使用全局状态来执行,看起来你只是打了一个:https://github.com/playframework/playframework/blob/2.5.x/framework/src/play/src/main/scala/play/api/mvc/ContentTypes.scala#L657

    这应该随着 play 2.6 而改变,但同时你应该在你的测试中启动一个应用程序以使其工作

    【讨论】:

    • 是的,我也看到了,但我不确定如何在我的测试中启动应用程序?
    • Play 有一些帮助程序可以在测试时使用应用程序,例如 trait OneAppPerSuite。我建议你看看documentation中的例子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多