Escribiendo un caso de prueba para cargar archivos en Play 2.1 y Scala

He encontrado la siguiente pregunta / respuesta:

Prueba MultipartFormData en Play 2.0 FakeRequest

Pero parece que las cosas han cambiado en Play 2.1. He intentado adaptar el ejemplo así:

"Application" should {

"Upload Photo" in {
  running(FakeApplication()) {
    val data = new MultipartFormData(Map(), List(
        FilePart("qqfile", "message", Some("Content-Type: multipart/form-data"), 
            TemporaryFile(getClass().getResource("/test/photos/DSC03024.JPG").getFile()))
        ), List())
    val Some(result) = routeAndCall(FakeRequest(POST, "/admin/photo/upload", FakeHeaders(), data)) 
    status(result) must equalTo(CREATED)
    headers(result) must contain(LOCATION)
    contentType(result) must beSome("application/json")  

Sin embargo, cuando intento ejecutar la solicitud, obtengo una excepción de puntero nulo:

[error] ! Upload Photo
[error]     NullPointerException: null (PhotoManagementSpec.scala:25)
[error] test.PhotoManagementSpec$anonfunPrueba MultipartFormData en Play 2.0 FakeRequest$anonfun$applySin embargo, cuando intento ejecutar la solicitud, obtengo una excepción de puntero nulo:$anonfun$apply$4.apply(PhotoManagementSpec.scala:28)
[error] test.PhotoManagementSpec$anonfunPrueba MultipartFormData en Play 2.0 FakeRequest$anonfun$applySin embargo, cuando intento ejecutar la solicitud, obtengo una excepción de puntero nulo:$anonfun$apply$4.apply(PhotoManagementSpec.scala:25)
[error] play.api.test.Helpers$.running(Helpers.scala:40)
[error] test.PhotoManagementSpec$anonfunPrueba MultipartFormData en Play 2.0 FakeRequest$anonfun$apply$3.apply(PhotoManagementSpec.scala:25)
[error] test.PhotoManagementSpec$anonfunPrueba MultipartFormData en Play 2.0 FakeRequest$anonfun$apply$3.apply(PhotoManagementSpec.scala:25)

Si trato de reemplazar el routeAndCall en desuso con solo route (y elimino la Opción alrededor del resultado), obtengo un error de compilación que indica que no puede escribir una instancia de MultipartFormData [TemporaryFile] en la respuesta HTTP.

¿Cuál es la forma correcta de diseñar esta prueba en Play 2.1 con Scala?

Editar: Intenté modificar el código para probar solo el controlador:

"Application" should {

"Upload Photo" in {

   val data = new MultipartFormData(Map(), List(
   FilePart("qqfile", "message", Some("Content-Type: multipart/form-data"), 
    TemporaryFile(getClass().getResource("/test/photos/DSC03024.JPG").getFile()))
), List())

   val result = controllers.Photo.upload()(FakeRequest(POST, "/admin/photo/upload",FakeHeaders(),data))


   status(result) must equalTo(OK)
   contentType(result) must beSome("text/html")
   charset(result) must beSome("utf-8")
   contentAsString(result) must contain("Hello Bob")
  }

Pero ahora obtengo un error de tipo en todas las condiciones de prueba en torno a los resultados, como así:

[error]  found   : play.api.libs.iteratee.Iteratee[Array[Byte],play.api.mvc.Result]
[error]  required: play.api.mvc.Result

No entiendo por qué obtengo un Interator para matrices de bytes asignadas a Resultados. ¿Podría esto tener algo que ver con cómo uso un analizador de cuerpo personalizado? La definición de mi controlador se ve así:

def upload = Action(CustomParsers.multipartFormDataAsBytes) { request =>

  request.body.file("qqfile").map { upload =>

Usando el analizador de formularios de esta publicación:Extraer archivos de MultipartFormData en la memoria en Play2 / Scala

Respuestas a la pregunta(6)

Su respuesta a la pregunta