Тестирование 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).Тем не менее, я не имел успеха ни с одним из этих подходов.