Работя върху получаване на тестов случай, работещ с 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>
)
Някой има ли идея защо би се случило това?