我正在努力让一个测试用例与 Play 2.1.1 和 Specs2 一起使用,并且遇到了一个有趣的问题。我创建了一个 FakeRequest 发送到控制器,但控制器中的函数永远不会被调用。
这是测试代码(略微简化,但包含所有移动部件):
"controller" should {
"do something" in new WithApplication {
val controller = new MyController()
controller.main() {
new FakeRequest(
PUT,
routes.MyController.main().toString,
new FakeHeaders(Seq("Content-Type" -> Seq("text/xml"))),
AnyContentAsXml(<xml>xml</xml>)
)
}
}
这是控制器中的主要功能(嗯,至少只是它的开始):
def main() = Action(BodyParsers.parse.xml) { request =>
println("main")
}
这段代码永远不会命中 main。但是,奇怪的是,如果我制作没有参数的 FakeHeader,并删除 AnyContentAsXml,只需将 Xml 元素发送到控制器,那么它就可以工作:
new FakeRequest(
PUT,
routes.MyController.main().toString,
new FakeHeaders,
<xml>xml</xml>
)
有谁知道为什么会发生这种情况?