我想为我们的项目编写测试。如果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")
}
任何帮助表示感谢。
答案 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")
}
可能会出现其他问题,比如运行测试并非并行,但问题的答案是这样。