2017-02-06 44 views
0

试图测试解析multipartFormData播放功能阶测试玩parse.mulipartFormData

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) 

回答

1

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

这应该与播放2.6改变,但同时你应该开始在您的测试应用程序,使其工作

+0

耶只见上面还,但我不知道如何开始在我的测试应用程序? – richs

+0

Play有一些帮助者在测试像特征“OneAppPerSuite”时使用应用程序。我建议你看一下[documentation]中的例子(https://playframework.com/documentation/2.5.x/ScalaFunctionalTestingWithScalaTest#Creating-Application-instances-for-testing) – vdebergue