1

我正在使用 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
  }
}

这会在本地 (localhost) 测试 Web 服务。现在我想对生产 Jetty 服务器执行相同的测试。理想情况下,我只需更改一些 URL 就可以做到这一点。这可能吗?还是我必须为生产服务器编写自己的(可能重复的)测试代码?

4

1 回答 1

1

我不知道 Scalatra 如何管理其 URL,但您可以在 specs2 中做的一件事是从命令行控制参数

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
  }
}
于 2013-10-07T22:28:17.910 回答