Es strādāju pie tā, lai iegūtu testa gadījumu darbam ar Play 2.1.1 un Specs2, un man rodas interesanta problēma. Es izveidoju FakeRequest, lai nosūtītu uz kontrolieri, taču kontrollera funkcija nekad netiek izsaukta.
Šeit ir testa kods (nedaudz vienkāršots, bet ar visām kustīgajām daļām):
"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>)
)
}
}
Un šeit ir galvenā kontrollera funkcija (labi, vismaz tikai tās sākums):
def main() = Action(BodyParsers.parse.xml) { request =>
println("main")
}
Šis kods nekad nesasniedz galveno. Tomēr dīvainā kārtā, ja es izveidoju FakeHeader bez parametriem un noņemu AnyContentAsXml, vienkārši nosūtot Xml elementu uz kontrolieri, tas darbojas:
new FakeRequest(
PUT,
routes.MyController.main().toString,
new FakeHeaders,
<xml>xml</xml>
)
Vai kādam ir nojausma, kāpēc tas varētu notikt?