我一直在努力奮鬥幾個小時,每次發送一個FakeRequest時,似乎FakeApplication都會收到一個空的主體。但是,如果我嘗試運行Play應用程序並向本地主機發送正常請求,則所有事情都按預期工作,我收到作爲響應發送的文本。Playframework測試。 FakeRequest始終以空身發送(scala)
測試的另一種測試,我已經完成正在發送來自控制器的自定義響應(不一樣的接收),就像一個字符串「a」。
我的測試代碼如下所示:
val controller = app.injector.instanceOf(classOf[CreateRecordController])
val js = Json.obj()
val result = controller.apply().apply(
FakeRequest(POST, "/api/v1/record/")
.withHeaders(Headers(CONTENT_TYPE -> "application/json"))
.withJsonBody(js)
)
val content = contentAsJson(result)
info.apply(s"content was $content")
最後一條語句打印: 「內容是」 和一個HTML頁面,指出:「對於請求 'POST/API/V1 /記錄/'[無效JSON:無由於輸入結束 at [Source:[email protected]; line:1,column:0]]「 - >所以內容是空的。在控制器
我的操作處理程序是:
def apply: Action[JsValue] = Action.async(parse.json) { implicit request =>
Future.successful(BadRequest(request.body).withHeaders("Content-type" -> "application/json"))
}
我缺少的東西?
遊戲版本:2.6.2
你可能有一個BodyParser在你的控制器,期待一個JSON和空體從技術上講是無效的JSON,因此是錯誤響應。你可以從Controller中粘貼你的Action處理程序嗎? – saheb
@saheb控制器張貼。正如我在問題中解釋的那樣,使用POST向相應的uri發送請求的方式如預期的那樣 – vicaba
現在在編輯之後。您在響應中發送內容類型爲application/json,並且正文('request.body.toString')不是有效的JSON。因此錯誤。 – saheb