У меня есть спрей конечной точки, который принимает MultipartFormData так:спрей MultipartFormData Spec
trait ApiRouting extends Routing with ResultService with FormDataUnmarshallers {
override def route: Route =
path("test") {
post {
entity(as[MultipartFormData]) { formData =>
complete(handleRequest(formData))
}
}
}
}
Это прекрасно работает, когда я отправляю через почтальона. Тем не менее, я пытаюсь написать спецификацию, которая проверяет эту конечную точку и получить эту ошибку:
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`
}
}
}
Любые идеи о том, как проверить спрея многокомпонентные данные формы?
@maloney Я только что проверил ваш код с соответствующим файлом - он отлично работает для меня. Не могли бы вы загрузить минимальный рабочий пример в github. –