相关疑难解决方法(0)

播放框架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"))
}
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)

testing scala specs2 playframework-2.0

6
推荐指数
1
解决办法
7921
查看次数

PlayFramework FakeRequest返回400错误

在路线:

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)

它得到了理想的回应. …

scala playframework-2.3

3
推荐指数
1
解决办法
1173
查看次数