3

アプリケーションでファイルのアップロードをテストしたいと考えています。アップロード自体は、セクションhttp://www.playframework.org/documentation/2.0/JavaFileUploadの直接ファイル アップロードで説明されているように処理されます。

私は最新の Play20 バージョンを使用しており、ここで説明されているようにビルドしています。

私の現在のコードは次のようになりますが、明らかに、リクエストにテスト ファイルを追加する部分がありません。

テスト.java

FakeRequest request = fakeRequest(POST, "/measurement/123/file");
// how to append test file to this request?    
Result result = routeAndCall(request);
assertOK(result);

コントローラー.java

public static uploadFile() {
    RequestBody body = request().body();
    if (body != null) {
        RawBuffer rawBuffer = body.asRaw();
        if (rawBuffer != null) {
            File uploadedFile = rawBuffer.asFile();
            // ...
        }
    }
    return ok();
}
4

2 に答える 2

1

Play 2 Javaファイルアップロードテストの私の解決策は、FakeRequestを拡張するUploadFakeRequestを作成することでした。クラス内には、次のような独自のwithRawBodyメソッドがあります。

 RawBuffer raw = new RawBuffer(1000, data.getBytes()); // No clue what is the correct value here...
 AnyContentAsRaw content = new AnyContentAsRaw(raw);
 fake = new play.api.test.FakeRequest(POST, fake.path(), new play.api.test.FakeHeaders(Scala.asScala(map)), content, "127.0.0.1");
于 2012-12-03T12:55:09.967 に答える
0

ソースコードによると、FakeRequest呼び出しの署名は次のとおりです。

case class FakeRequest[A](method: String, uri: String, headers: FakeHeaders, body: A) extends Request[A] 

ファイルをアプリケーションにアップロードするPOSTリクエストの本文を検査し、その本文をテストコードのパラメーターとしてコピーできるはずです。別の方法は、マルチパートPOSTのRFCの説明に従ってビルドすることです。

于 2012-04-18T07:54:15.047 に答える