scala playframework scalatest specs2 playframework-2.4

Pruebe HttpErrorHandler con scalates/specs2 en Play Framework 2.4.2



playframework scalatest (1)

Implementé mi propio HttpErrorHander en Play Framework 2.4.2 y funciona muy bien, pero ahora quiero poder probar con "Fake Actions" que intencionalmente lanzan Exceptions. Lo he intentado en scalatest y specs2

import play.api.http.HttpErrorHandler import play.api.mvc._ import play.api.mvc.Results._ import scala.concurrent._ class MyErrorHandler extends HttpErrorHandler { def onClientError(request: RequestHeader, statusCode: Int, message: String) = { Future.successful( Status(statusCode)("A client error occurred: " + message) ) } def onServerError(request: RequestHeader, exception: Throwable) = { Future.successful( InternalServerError("A server error occurred: " + exception.getMessage) ) } }

Intenté hasta ahora las siguientes pruebas. Intento depurar el código, pero nunca ingreso mis métodos. Los métodos de play.api.http.DefaultHttpErrorHandler no se ejecutan.

object ThrowableControllerSpec extends PlaySpecification with Results { "Example Page" should { "throwErrorAction should be valid" in { val controller = new TestController() val result: Future[Result] = controller.exceptionAction().apply(FakeRequest()) //val bodyText: String = contentAsString(result) status(result) mustEqual INTERNAL_SERVER_ERROR //bodyText must be startingWith "A server error occurred:" } } }

El método de Acción en TestController.exceptionAction ve:

def exceptionAction() = Action { if (true) throw new Exception("error") else Ok("") }

El segundo intento:

class ApplicationSpec extends Specification { "Application" should { "sent 500 on server error" in new WithApplication { route(FakeRequest(GET, "/exception")) must beSome.which(status(_) == INTERNAL_SERVER_ERROR) } } }

Y la ruta para /exception

GET /exception controllers.TestController.exceptionAction

También agregué en application.conf play.http.errorHandler . Pero como dije, esto está funcionando, pero no puedo probarlo. La prueba siempre falla con la excepción dada en exceptionAction .

Gracias de antemano