Я работаю над созданием тестового примера, работающего с 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>
)
Кто-нибудь знает, почему это произойдет?