gpt4 book ai didi

scala - 在 Play Framework 2.4.2 中使用 scalates/specs2 测试 HttpErrorHandler

转载 作者:行者123 更新时间:2023-12-04 16:08:19 28 4
gpt4 key购买 nike

我已经在 Play Framework 2.4.2 中实现了我自己的 HttpErrorHander 并且它运行得很好,但现在我希望能够使用故意抛出异常的“假 Action ”进行测试。我试过 scalatestspecs2

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)
)
}
}

到目前为止,我尝试了以下测试。我尝试调试代码,但我从不输入我的方法。 play.api.http.DefaultHttpErrorHandler的方法都没有被执行。
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:"
}
}
}
TestController.exceptionAction中的Action方法看起来:
def exceptionAction() = Action {
if (true)
throw new Exception("error")
else
Ok("")
}

第二次尝试:
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)
}

}
}

以及 /exception的路线
GET        /exception               controllers.TestController.exceptionAction

我还在 application.conf中添加了 play.http.errorHandler .但正如我所说,这是有效的,但我无法对其进行测试。测试总是失败,并在 exceptionAction 中给出异常.

先感谢您

最佳答案

如果你使用的是 Specs2,试试这个

await(controller.exceptionAction()(FakeRequest())) must throwA[Throwable] // or any error you want to test against

请参阅这些链接。
  • https://twitter.github.io/scala_school/specs.html
  • http://www.scalatest.org/user_guide/using_assertions (用于 ScalaTest)
  • http://www.scalatest.org/getting_started_with_fun_suite

  • 希望这可以帮助!

    关于scala - 在 Play Framework 2.4.2 中使用 scalates/specs2 测试 HttpErrorHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31465884/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com