Play Framework&Scala:单元测试中FakeRequest和JSON POST的
发布时间:2020-12-16 08:51:09 所属栏目:安全 来源:网络整理
导读:我花了太多时间尝试调试以下问题,但我不确定问题出在哪里. 问题:获得400个错误请求,无效Json作为响应,具有以下异常: com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input at [Source: [B@6ee503c9; line: 1,colu
我花了太多时间尝试调试以下问题,但我不确定问题出在哪里.
问题:获得400个错误请求,无效Json作为响应,具有以下异常: com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input at [Source: [B@6ee503c9; line: 1,column: 1] at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164) ~[jackson-databind.jar:2.2.2] at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:2931) ~[jackson-databind.jar:2.2.2] at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:2846) ~[jackson-databind.jar:2.2.2] at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1569) ~[jackson-databind.jar:2.2.2] at play.api.libs.json.JacksonJson$.parseJsValue(JsValue.scala:480) ~[play-json_2.10.jar:2.2.0] at play.api.libs.json.Json$.parse(Json.scala:27) ~[play-json_2.10.jar:2.2.0] 在我的控制器中测试的方法: def createArticle(id: String) = Action.async(parse.json) { implicit request => (request.body "content").asOpt[String].map { ............ ............ }.getOrElse(BadRequest("Invalid request body")) } 相应的单元测试: "create article" in { running(FakeApplication()) { val postJson = Json.obj("content" -> "article content") val result = resource.createArticle(ARTICE_ID)(FakeRequest(POST,controllers.routes.ArticleResource.create(ARTICLE_ID).url).withJsonBody(postJson).withHeaders(CONTENT_TYPE -> "application/json").run status(result) must equalTo OK } } 我读了here的讨论,但没有任何建议有帮助. 解决方法
我有类似的问题,但到目前为止还没有解决它们(优雅地,无论如何……).由于我的环境是java而不是scala,我可以直截了当.我认为当你发送帖子时它可能是异步完成的(你的创建文章方法中的Action.async),所以你可能需要等待测试代码结果才能看到它是否正常.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |