2016-03-29 16 views
0

スプレー。しかし、私はこのエンドポイントをテストスペックを書いて、このエラーを取得しようとしています:は、私はこのようなMultipartFormDataを受け入れスプレーエンドポイントを持っているMultipartFormDataスペック

java.lang.ClassCastException: spray.http.HttpEntity$Empty$ cannot be cast to spray.http.HttpEntity$NonEmpty

これは私が持っているものです。

trait Context extends Scope with ApiRouting {} 

    "check post request" should { 

    "return response data for post request" in new Context { 

     val file = new File("test") 
     val httpEntity = HttpEntity(MediaTypes.`multipart/form-data`, HttpData(file)).asInstanceOf[HttpEntity.NonEmpty] 
     val formFile = FormFile("file", httpEntity) 
     val mfd = MultipartFormData(Seq(BodyPart(formFile, "file"))) 

     Post("/test", mfd) ~> route ~> check { 
     status must_== StatusCodes.OK 
     contentType must_== `multipart/form-data`  
     } 
    } 
    } 

スプレーマルチパートフォームデータをテストする方法上の任意のアイデア?

答えて

2

長さがゼロのファイルをHttpDataに渡しているために起こっています。実際のファイルを参照してみてください。

また、Fileを直接BodyPartに渡すこともできます。それは次のようになります:

Post(Uri("/test"), 
     MultipartFormData(
     Seq(BodyPart(file, "file", ContentType(MediaTypes.`application/xml`))) 
    ) 
    ) 
+0

@maloney私はちょうど適切なファイルであなたのコードをテストしました - それは私のためにうまく動作します。最低限の実例をgithubにアップロードできますか? –

関連する問題