如何在Play 2.1中测试Web服务调用?

时间:2013-06-16 20:02:18

标签: unit-testing scala playframework playframework-2.1 scala-2.10

我正在抓取一个期望GET参数和cookie的网站。我想知道是否正在发送正确的参数和cookie。能够测试HTTP标头,POST数据等将在以后非常有用。

在我看来,最好的方法是启动一个网络服务器,让抓取代码调用一个指向网络服务器的URL,看看是否所有内容都在服务器上正确到达。有一种简单的方法来设置模拟外部Web服务器也非常适合集成测试。

这是一个简单的代码:

  def getResource(a: String, b: String, c: String) =
    WS.url("http://www.example.com")
          .withQueryString("x" -> a, "y" -> b)
          .withHeaders("Cookie" -> c)
          .get()

我正在使用ScalaTest进行单元测试。

Play是否提供了轻松测试这类内容的功能?是否有其他易于使用的库可以满足我的需求?

2 个答案:

答案 0 :(得分:2)

在单元测试中尝试嵌入式jetty,您可以按照自己想要的方式伪造外部服务

答案 1 :(得分:0)

测试Play 2应用程序的默认方法是使用specs2。在您的情况下,可以使用functional tests来测试网络服务器,如:

"run in a server" in new WithServer {
  await(getResource(a,b,c)).status must equalTo(OK)
}

有关测试Play 2应用的信息,请参阅documentation