Je travaille sur un scénario de test fonctionnant avec Play 2.1.1 et Specs2 et je rencontre un problème intéressant. Je crée une FakeRequest à envoyer à un contrôleur, mais la fonction du contrôleur n'est jamais appelée.
Voici le code de test (légèrement simplifié, mais avec toutes les pièces mobiles) :
"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>)
)
}
}
Et voici la fonction principale du contrôleur (enfin, du moins juste le début) :
def main() = Action(BodyParsers.parse.xml) { request =>
println("main")
}
Ce code n'atteint jamais main. Curieusement, cependant, si je crée le FakeHeader sans paramètres et que je supprime AnyContentAsXml, en envoyant simplement l'élément Xml au contrôleur, alors cela fonctionne :
new FakeRequest(
PUT,
routes.MyController.main().toString,
new FakeHeaders,
<xml>xml</xml>
)
Quelqu'un a-t-il une idée de pourquoi cela se produirait ?