मैं निम्नलिखित कार्रवाईखेलने ढांचा 2: शरीर के रूप में एक json तार के साथ एक अनुरोध का परीक्षण
def save() = Action(parse.json) { implicit request =>
request.body.asOpt[IdeaType].map { ideatype =>
ideatype.save.fold(
errors => JsonBadRequest(errors),
ideatype => Ok(toJson(ideatype))
)
}.getOrElse (JsonBadRequest("Invalid type of idea entity"))
}
है और मैं यह
परीक्षण करने के लिए वेब सेवा इस तरह कर्ल के साथ ठीक काम करता है चाहते हैं:
curl -X post "http://localhost:9000/api/types"
--data "{\"name\": \"new name\", \"description\": \"new description\"}"
--header "Content-type: application/json"
जो सही ढंग से नए संसाधन रिटर्न
{"url":"/api/types/9","id":9,"name":"new name","description":"new description"}
मैं
"add a new ideaType, using route POST /api/types" in {
running(FakeApplication(additionalConfiguration = inMemoryDatabase())) {
val json = """{"name": "new name", "description": "new description"}"""
val Some(result) = routeAndCall(
FakeRequest(
POST,
"/api/types",
FakeHeaders(Map("Content-Type" -> Seq("application/json"))),
json
)
)
status(result) must equalTo(OK)
contentType(result) must beSome("application/json")
val Some(ideaType) = parse(contentAsString(result)).asOpt[IdeaType]
ideaType.name mustEqual "new name"
}
}
साथ यह परीक्षण करने के लिए कोशिश कर रहा हूँ लेकिन मैं निम्नलिखित त्रुटि हो रही है: Play 2 - Scala FakeRequest withJsonBody
मैं कुछ याद आ रही है:
[error] ! add a new ideaType, using route POST /api/types
[error] ClassCastException: java.lang.String cannot be cast to play.api.libs.json.JsValue (IdeaTypes.bak.scala:35)
[error] controllers.IdeaTypes$$anonfun$save$1.apply(IdeaTypes.bak.scala:36)
[error] controllers.IdeaTypes$$anonfun$save$1.apply(IdeaTypes.bak.scala:35)
[error] play.api.mvc.Action$$anon$1.apply(Action.scala:170)
मैं इस सवाल पर सलाह का पालन किया ?
-
किम Stebel समाधान ठीक काम किया, लेकिन फिर मैं withJsonBody साथ करने की कोशिश की, इस तरह:
val jsonString = """{"name": "new name", "description": "new description"}"""
val json: JsValue = parse(jsonString)
val Some(result) = routeAndCall(
FakeRequest(POST, "/api/types").
withJsonBody(json)
)
और मैं निम्नलिखित त्रुटि मिलती है:
[error] ! add a new ideaType, using route POST /api/types
[error] ClassCastException: play.api.mvc.AnyContentAsJson cannot be cast to play.api.libs.json.JsValue (IdeaTypes.bak.scala:35)
[error] controllers.IdeaTypes$$anonfun$save$1.apply(IdeaTypes.bak.scala:36)
[error] controllers.IdeaTypes$$anonfun$save$1.apply(IdeaTypes.bak.scala:35)
किसी भी विचार?
करने के लिए लाइन
बदलें? –
अपवाद "def save() = action ..." लाइन पर होता है ... – opensas
अपना मार्ग पेस्ट करें और कॉल मदद कर सकता है। – wliao