2015-05-20 5 views
1

У меня есть API, созданный с использованием Spray, который обрабатывает загрузку файлов. Я пытаюсь написать тест для функции загрузки, но я никуда не гожусь. Я не уверен, как структурировать тест для имитации загрузки файла. У меня есть следующий тест ...Spray: Тестирование загрузки файлов с помощью Specs2

"Valid POST Requests should return success" in { 
    Post("/upload", HttpEntity(MediaTypes.`multipart/form-data`, """{"filename":"a.wav"}""")) ~> 
    sealRoute(uploadRoute) ~> check { 
    response.status should be equalTo OK 
    responseAs[String] === "..." 
    } 
} 

Запуск этого производит следующее сообщение об ошибке ...

Content-Type with a multipart media type must have a non-empty 'boundary' parameter' is not equal to ... 

Это похоже сообщение об ошибке аналогично тому, как издеваться POST/закачивать запросы, используя апача где вы должны указать почтовый файл и границу для разделения элементов формы. Я надеялся на что-то ближе к тому, как работает CURL.

В любом случае, может ли кто-нибудь указать мне в правильном направлении относительно того, как правильно структурировать такой тест?

спасибо

ответ

2

Таким образом, мне удалось получить эту работу, объединив некоторый код из множества сообщений, которые я нашел - в основном сообщения, связанные с использованием брызг-клиента для загрузки файлов. Наверное, не самый красивый, но работает для меня! :)

"Valid POST Requests should return success" in { 
    val file = new File("a.wav") 
    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("/upload", mfd) ~> sealRoute(uploadRoute) ~> check { 
    response.status should be equalTo OK 
    body.contentType.toString() === "application/json; charset=UTF-8" 
    responseAs[String] === "Success!" 
    } 
} 
0

У меня такая же проблема, или вопрос.

Попробуйте добавить границу, выполнив:

Post ("/ загрузки", HttpEntity (multipart/form-data .withBoundary типы файлов ("- somerandomboundary"), "". "{" Имя_файла ":" a.wav "} "" ")) ~>

Хотя, вы можете столкнуться с следующим ударом, с которым я сталкиваюсь, что является ошибкой, заявляющей, что для этого требуется начальная граница.

+0

Привет, я пытался, что я видел раньше, но проблемы, как вы сказали, просто побежал в другую проблему. Во всяком случае, я просто получил эту работу (для меня в любом случае!) И опубликует мое решение в качестве ответа – fatlog

Смежные вопросы