मी 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")
}
हा कोड कधीच मुख्यवर येत नाही. विचित्र गोष्ट म्हणजे, जर मी कोणतेही पॅरामीटर्सशिवाय FakeHeader बनवले आणि AnyContentAsXml काढून टाकले, फक्त Xml घटक कंट्रोलरला पाठवले, तर ते कार्य करते:
new FakeRequest(
PUT,
routes.MyController.main().toString,
new FakeHeaders,
<xml>xml</xml>
)
हे का घडेल याची कोणाला कल्पना आहे का?