Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用specs2调用函数不需要';t调用函数_Scala_Playframework_Specs2 - Fatal编程技术网

Scala 使用specs2调用函数不需要';t调用函数

Scala 使用specs2调用函数不需要';t调用函数,scala,playframework,specs2,Scala,Playframework,Specs2,我正在准备一个使用Play2.1.1和Specs2的测试用例,遇到了一个有趣的问题。我创建了一个FakeRequest发送到控制器,但是控制器中的函数从未被调用 以下是测试代码(稍微简化,但包含所有活动部件): 这段代码永远不会命中主代码。但是,奇怪的是,如果我制作没有参数的FakeHeader,并删除AnyContentAsXml,只将Xml元素发送到控制器,那么它就可以工作了: new FakeRequest( PUT, routes.MyController.main().

我正在准备一个使用Play2.1.1和Specs2的测试用例,遇到了一个有趣的问题。我创建了一个FakeRequest发送到控制器,但是控制器中的函数从未被调用

以下是测试代码(稍微简化,但包含所有活动部件):

这段代码永远不会命中主代码。但是,奇怪的是,如果我制作没有参数的FakeHeader,并删除AnyContentAsXml,只将Xml元素发送到控制器,那么它就可以工作了:

new FakeRequest(
    PUT,
    routes.MyController.main().toString,
    new FakeHeaders,
    <xml>xml</xml>
)
new FakeRequest(
放,
routes.MyController.main().toString,
新的假标题,
xml
)

有人知道为什么会发生这种情况吗?

这是您的测试,显示了测试控制器的两种方法。AnyContentAsXml不适合您的原因是您的测试将两种方法混合在一起

"one way" in new WithApplication {
    val action = controllers.Application.main
    val req: FakeRequest[scala.xml.NodeSeq] = new FakeRequest(
            PUT,
            "some url",
            new FakeHeaders(Seq("Content-Type" -> Seq("text/xml"))),
            <xml>xml</xml>
        )
    val x = action(req)
    status(x) should beEqualTo(200)
}

"2nd way" in new WithApplication {
  val Some(result) = route(new FakeRequest("PUT", 
      "/", 
      new FakeHeaders(Seq("Content-Type" -> Seq("text/xml"))),
      AnyContentAsXml(<xml>xml</xml>)))
  status(result) should beEqualTo(200)
}
new FakeRequest(
    PUT,
    routes.MyController.main().toString,
    new FakeHeaders,
    <xml>xml</xml>
)
"one way" in new WithApplication {
    val action = controllers.Application.main
    val req: FakeRequest[scala.xml.NodeSeq] = new FakeRequest(
            PUT,
            "some url",
            new FakeHeaders(Seq("Content-Type" -> Seq("text/xml"))),
            <xml>xml</xml>
        )
    val x = action(req)
    status(x) should beEqualTo(200)
}

"2nd way" in new WithApplication {
  val Some(result) = route(new FakeRequest("PUT", 
      "/", 
      new FakeHeaders(Seq("Content-Type" -> Seq("text/xml"))),
      AnyContentAsXml(<xml>xml</xml>)))
  status(result) should beEqualTo(200)
}
def main = Action(BodyParsers.parse.xml) { request =>
   println(">>>>>>>>>>>>>>>>>>> main")
  Ok("")
}