私はカスタムbodyparserとJSONバリデータを使用してプレイフレームワーク2.5.10コントローラをテストしようとしている:私はこの上の簡単なテストケースを実行すると、私はエラーを取得するカスタムボディーパーサーを使用するプレーフレームワークコントローラーをテストするにはどうすればよいですか?
class MessagingController {
def validateJson[A : Reads] = parse.json.validate(
_.validate[A].asEither.left.map(e => BadRequest(JsError.toJson(e)))
)
def createMessageThread() = Action(validateJson[InboundMessageThread]) { request =>
Ok("OK") }
}
を:
For request 'POST /api/v1/messageThreads' [Invalid Json: No content to map due to
end-of-input at [Source: [email protected]; line: 1, column: 0]]
テストは次のとおりです。
val fakeRequest = FakeRequest()
.withHeaders(HeaderNames.CONTENT_TYPE -> "application/json")
.withBody(Json.parse(
s"""
|{
| "participants": [
| {"id": $currentUserId, "isAdmin": false}
| ],
| "isGroupThread": false
|}
""".stripMargin))
val result = messagingController.createMessageThread()(fakeRequest).run()
status(result) mustBe OK
私はちょうどAction
、その後、コントロールの本体でJSONを検証するために、コントローラのアクションを変更した場合それがうまくいけば多くのRESTコントローラがJSONを解析して使用する必要があり、validateJson[T]
が定型文を減らすので、私はそれをやりたくありません。このコードは、同じペイロードをカールを使用して送信する場合にも機能します。
このコントローラをテストするにはどうすればよいですか?
これは '415が403と等しくない 'ことを示します。私が 'withHeaders'呼び出しを追加すると、前と同じように' 400は403と等しくない 'になります。 – jbrown