集成测试在请求中使用自定义标头播放框架

时间:2015-08-24 16:58:36

标签: scala testing playframework

我想为我们的项目编写测试。如果Accept标头和Accept-Language以及其他一些内容发生变化,服务器必须响应其他内容。 我们在启动时使用协作工具,所以我想针对url:port运行测试而不是模拟它。如果它可行(或者至少像下面的例子那样),我希望它在完整的http栈上进行。

我的主要问题是:如何编写测试,我可以完全参数化请求,并可以发送到Web服务器。

我写了一个像以下一样的工作测试:

"returns valid json" in new WithBrowser {
  browser.goTo("http://" + AppConf.getString(AppConf.MOBILE_CLIENT_URL) + ":" + AppConf.getString(AppConf.MOBILE_CLIENT_PORT) + "/version")
  Json.parse(browser.pageSource)
  browser.pageSource must contain("\"communicationVersion\"")
  browser.pageSource must contain("4")

}

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

解决方案:

从PlaySpecification而不是Specification扩展,导入play.api.libs.ws.WS并尝试如下:

"returns valid json" in new WithServer {
  val f = WS.url(mobileUrl + "/version").withHeaders(("Accept", api.acceptedAcceptHeader)).get()
  val r = await(f)
  r.json
  r.body must contain("\"communicationVersion\"")
  r.body must contain("4")
}

可能会出现其他问题,比如运行测试并非并行,但问题的答案是这样。