Тестирование Play Framework с использованием MultipartFormData в FakeRequest

В настоящее время я нахожусь в процессе написания некоторых тестов Specs2 для приложения May Play Framework 2.2.x, которое принимает представления MultipartFormData как часть этого ».с функцией.

Я успешно написал другие тесты с текстом и телами JSON, используя следующую форму:

"respond to POST JSON with description field present" in {
  running(FakeApplication()) {
    val response = route(FakeRequest(POST, "/submission.json").withJsonBody(toJson(Map("content" -> toJson("test-content"), "description" -> toJson("test-description"))))).get
    status(response) must equalTo(OK)
    contentType(response) must beSome.which(_ == "application/json")
    contentAsString(response) must contain(""""description":"test-description"""")
    contentAsString(response) must contain(""""content":"test-content"""")
  }
}

Однако, когда я использую метод .withMultipartFormData, я получаю следующие ошибки:

Cannot write an instance of play.api.mvc.AnyContentAsMultipartFormData to HTTP response. Try to define a Writeable[play.api.mvc.AnyContentAsMultipartFormData]
val response = route(FakeRequest(PUT,"/submission.json/1/files").withMultipartFormDataBody(data)).get
                    ^

Тест MultipartFormData, который я пытался отладить, имеет вид:

"respond to file PUT form with details not specififed" in {
  running(FakeApplication()) {
     val basePath:String = Play.application.path.getCanonicalPath();
     val data:MultipartFormData[TemporaryFile] = MultipartFormData(Map[String,Seq[String]](),
                                    List(
                                        FilePart("file_upload","",Some("Content-Type: multipart/form-data"),TemporaryFile(new java.io.File(basePath + "/test-data/testUpload.jpg")))
                                    ), 
                                    List(), 
                                    List())


     val response = route(FakeRequest(PUT,"/submission.json/1/files").withMultipartFormDataBody(data)).get
     status(response) must equalTo(CREATED)
 }
}

Глядя на документацию Play Framework для соответствующей версии класса FakeRequest, я могу 'не вижу слишком много, чтобы помочь мне отследить проблему:play.api.test.FakeRequest

Что касается другой документации по этому вопросу, то, похоже, веб-сайт Play Framework и Google не хватает.

Я попробовал следующие альтернативные способы тестирования моего кода MultipartFormData:

Написание тестового примера для загрузки файлов в Play 2.1 и ScalaТестирование MultipartFormData в Play 2.0 FakeRequestКак протестировать запросы данных из нескольких частей для загрузки файлов в Play Framework 2.0 с использованием Java? (Сначала перевод на код Scala).

Тем не менее, я не имел успеха ни с одним из этих подходов.

Ответы на вопрос(3)

Ваш ответ на вопрос