我正在使用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来实现此目的。这有可能吗?或者我是否必须为生产服务器编写自己的(可能重复的)测试代码?
答案 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
}
}