2

ルート関数を使用してマルチパートフォームを使用するポストコントローラーのテストを作成するplay2.1に取り組んでいます。

route(
  FakeRequest(POST,
    postControllerRoute().url,
    FakeHeaders(Seq(HeaderNames.CONTENT_TYPE -> Seq("multipart/form-data"))),
    body = body
  ).withAuthToken.withAdmin(adminId))

このコードが機能するには、body変数のタイプがMultipartFormData [TemporaryFile]であるため、このタイプのWriteable[MultipartFormData[TemporaryFile]]の書き込み可能オブジェクトを定義する必要があることがわかりました。マルチパートリクエストをシリアル化する方法や、これが正しいアプローチであるかどうかはわかりません。助言がありますか?

編集済み

回答:ルーターをスキップして、ドキュメントのようにコントローラーを直接使用してください:http ://www.playframework.com/documentation/2.1.0/ScalaFunctionalTest

4

2 に答える 2

2
  • あなたには2つの選択肢があります。MultiPartFormDataそれは(私が知る限り)非常に難しいことです。この投稿は役立つかもしれません:https ://groups.google.com/forum/?fromgroups =#!topic / play-framework / MPtQlX-cWMQ
  • メソッドの実行をスキップできますroute。コントローラでテストする場合はAction、ルートをバイパスするだけです。ドキュメントの「コントローラーのテスト」を参照してください。ルーターを経由しない場合は、を指定する必要はありませんWritable。ルーターを経由する必要はほとんどありません。基本的に、最初にバイトとして(を使用してWriter)書き込み、次に(ボディパーサーを使用して)Playが理解できるものに変換し直します。
于 2013-02-21T22:53:51.110 に答える
0

ルートをスキップしたくない場合は、Writeable [AnyContentAsMultipartFormData]が必要です。これにより、MultipartFormData[TemporaryFile]がArray[Byte]に変わります。

ここに書き込み可能な[AnyContentAsMultipartFormData]があります:http://tech.fongmun.com/post/125479939452/test-multipartformdata-in-play

于 2015-07-31T02:50:32.463 に答える