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

时间:2012-05-10 12:02:50

标签: unit-testing scala rest

我想使用Spec2和Scala来测试使用Java构建的REST服务。我看了Spray,但是接缝就像你必须使用Spray构建你的应用程序,以便使用SprayTest测试它。我也找到了this thread,但这并不是我想要的。

还有其他想法吗?

2 个答案:

答案 0 :(得分:4)

我们已成功使用Specs2和Dispatch库(https://dispatchhttp.org/Dispatch.html)测试了所有REST API。调度需要花费一点时间来解决问题,但是一旦你理解了它与各种操作符一起组成所有内容,你就可以用几行代码测试一个简单的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字符串,以便我们可以更容易地再次声明文档。上述测试只是检查一些简单的错误/状态情况。

还有一个正在进行的调度重启项目,该项目具有简化的API并与异步连接一起使用。不确定它到底有多稳定。

答案 1 :(得分:1)

在我的上一个项目中,我使用AsyncHttpClientJersey Client来测试REST服务,我可以推荐它们。对于异步操作,前者更好(我不知道是否是泽西客户端 完全支持异步操作。

它们是用Java编写的,并且(据我所知)没有Scala-API。