Scala 如何编写使用子域的测试?

Scala 如何编写使用子域的测试?,scala,junit,playframework,Scala,Junit,Playframework,我有一个使用子域的播放应用程序 目前,我在笔记本电脑上安装了dns,因此我可以在本地浏览URL,如: subdomain1.myappurl.com:9000/ subdomain2.myappurl.com:9000/ (我将myappurl指向127.0.0.1) 我现在想创建一个使用这些URL的测试(我想提供URL) 如何使用FakereRequest完成此操作? 还有,什么是FakeRequest,它是无头浏览器吗?理想情况下,我希望创建一个集成测试(但不测试UI方面的东西),以确保在我

我有一个使用子域的播放应用程序

目前,我在笔记本电脑上安装了dns,因此我可以在本地浏览URL,如:

subdomain1.myappurl.com:9000/ subdomain2.myappurl.com:9000/

(我将myappurl指向127.0.0.1)

我现在想创建一个使用这些URL的测试(我想提供URL)

如何使用FakereRequest完成此操作?


还有,什么是FakeRequest,它是无头浏览器吗?理想情况下,我希望创建一个集成测试(但不测试UI方面的东西),以确保在我登录/注销时数据正确写入数据库。

编辑:根据OP的评论,有一种方法可以通过将主机名添加为头来覆盖
FakeRequest
中的主机名。看起来,
request.host
实际上是在
request
trait中设置的,它只是从头中派生出来的

import play.api.http.HeaderNames
FakeRequest(GET, "/something").withHeaders(HeaderNames.HOST -> "sub.domain.com")

FakeRequest只是通过
FakeApplication
的路由器传递(如果使用
route
helper),您得到的是控制器功能的
结果。这里没有无头浏览器

使用无头浏览器的是助手


WithBrowser
对于测试数据是否已保存来说有点过分了。

客户端有自己的子域,因此它是我应用程序测试的关键部分。路由不看子域,在我的自定义操作中,我查看请求对象以获得子域。哇,brillian感谢捆绑包。顺便说一句,我在哪里可以看到所有这些方法的列表,比如:contentType、contentAsString、redirectToLocation等。Play API文档:
FakereRequest
位于同一个包中,尽管我不得不对源代码做了一些修改,以查看它是如何设置其头的。
"go to the right url" in new WithBrowser(webDriver = WebDriverFactory(HTMLUNIT)) {
      browser.goTo("google.com")
      browser.pageSource must not contain("Bing")
      // Do other things ...
}