我有以下行动
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"))
}
Run Code Online (Sandbox Code Playgroud)
我想测试一下
Web服务正常运行,如下所示:
curl -X post "http://localhost:9000/api/types"
--data "{\"name\": \"new name\", \"description\": \"new description\"}"
--header "Content-type: application/json"
Run Code Online (Sandbox Code Playgroud)
正确返回新资源
{"url":"/api/types/9","id":9,"name":"new name","description":"new description"}
Run Code Online (Sandbox Code Playgroud)
我正试着用它来测试它
"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" …Run Code Online (Sandbox Code Playgroud) 在路线:
POST /login controllers.ApplicationCtrl.login()
Run Code Online (Sandbox Code Playgroud)
在控制器中:
def login = Action(parse.json) { implicit request => {
val email = (request.body \ "email").as[String]
val password = (request.body \ "password").as[String]
Ok(Json.toJson(
Map("status" -> "OK",
"message" -> "%s created".format(email))
))
}
Run Code Online (Sandbox Code Playgroud)
在测试中
"login" in new WithApplication{
val request = route( FakeRequest(
Helpers.POST,
controllers.routes.ApplicationCtrl.login.url,
FakeHeaders(Seq(CONTENT_TYPE -> Seq("application/json"))),
""" {"email" : "bob@mail.com", "password" : "secret"} """
)).get
status(request) must equalTo(OK)
}
Run Code Online (Sandbox Code Playgroud)
当我使用命令行测试时:
curl --header "Content-type: application/json" --request POST --data '{"email" : "bob@mail.com", "password" : "secret"}' http://localhost:9000/login
Run Code Online (Sandbox Code Playgroud)
它得到了理想的回应. …