用哪个Scala框架测试REST服务?

8
我想使用Spec2和Scala来测试使用Java构建的REST服务。我查看了Spray,但似乎必须使用Spray构建应用程序才能使用SprayTest进行测试。我还找到了this thread,但这并不是我要找的东西。
还有其他想法吗?
2个回答

4
我们成功地使用Specs2和Dispatch库(https://dispatchhttp.org/Dispatch.html)测试了所有的REST API。Dispatch需要一些时间才能理解,但一旦你明白了如何使用各种运算符将所有内容组合在一起,你就可以用几行代码测试一个简单的REST服务。
以下是我们最近项目中的一些测试用例:
  def issueErrorStatus = {
    val requestBody = "msisdn=447777666666&message=Some test message"
    val req = url("http://localhost:%d/otac/issue".format(port)) << 
                            (requestBody, "application/x-www-form-urlencoded")
    val response = Http.when(_ == 400)(req <:< (touchPointHeaders) as_str)
    response must_== """{"error":"Message must contain an {OTAC} place holder"}"""
  }

  def checkOtac = {
    val req = url("http://localhost:%d/otac/check".format(port)) <<? 
                                         Vector(("msisdn" -> "447777123456"))
    val response = Http(req <:< (touchPointHeaders) as_str)
    response must_== """{"status":"Present","reissueAllowed":true}"""
  }

第一个测试进行了POST请求,第二个进行了GET请求。我们还有一些更复杂的测试,通过lift-json解析响应JSON字符串,以便我们可以更轻松地对文档进行断言。上述测试仅检查了一些简单的错误/状态情况。
还有一个名为dispatch-reboot的项目正在进行中,它具有简化的API并与异步连接一起工作。不确定它的稳定性如何。

1
在我的最近几个项目中,我使用了AsyncHttpClientJersey Client来测试REST服务,并且我可以推荐它们两个。对于异步操作,前者更好(我不知道Jersey Client是否支持异步操作)。
它们都是用Java编写的,据我所知没有Scala-API。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接