如何使用 json 主体对控制器动作进行单元测试?

How to unit test controller action with json body?

假设我有一个案例class,作者json提供

val song1 = Song("Song one", "Artist 1", "Song url 1")

然后我尝试使用解析器 Action(parse.json)

调用控制器操作 create
adminController.create(FakeRequest().withHeaders(CONTENT_TYPE -> "text/json").withJsonBody(Json.toJson(song1))).run

我收到一个错误

[Invalid Json: No content to map due to end-of-inpu at [Source: [B@1ad542ff; line: 1, column: 1]]

我错过了什么?

.withJsonBody 似乎是供内部使用的。只需使用

val json = /* some JsValue */
FakeRequest().withBody(json)

并且请求将被自动正确地解析为正确的headers。