如何使用Specs2测试远程(生产)Scalatra Web服务?

时间:2013-10-07 15:41:11

标签: specs2 scalatra

我正在使用Specs2来测试我的Scalatra Web服务。

class APISpec extends ScalatraSpec {
  def is = "Simple test" ^
     "invalid key should return status 401" ! root401^

  addServlet(new APIServlet(),"/*")

  def root401 = get("/payments") {
    status must_== 401
  }
}

这将在本地测试Web服务(localhost)。现在我想对生产Jetty服务器执行相同的测试。理想情况下,我只能通过更改某些URL来实现此目的。这有可能吗?或者我是否必须为生产服务器编写自己的(可能重复的)测试代码?

1 个答案:

答案 0 :(得分:1)

我不知道Scalatra如何管理其网址,但您在specs2中可以做的一件事是control parameters from the command-line

class APISpec extends ScalatraSpec with CommandLineArguments { def is = s2"""
  Simple test
  invalid key should return status 401  $root401
    ${addServlet(new APIServlet(),s"$baseUrl/*")}
  """

  def baseUrl = {
    // assuming that you passed 'url www.production.com' on the command line
    val args = arguments.commandLine.split(" ")
    args.zip(args.drop(1)).find { case (name, value) if name == "url" => value }.
      getOrElse("localhost:8080")
  }

  def root401 = get(s"$baseUrl/payments") {
    status must_== 401
  }
}