当我运行我的测试套件时,他们失败了PSQLException:致命:对不起,已经有太多客户了

问题描述 投票:2回答:2

我正在为我的Play应用程序编写测试,我想用真实服务器运行它们,以便我可以伪造外部服务的所有答案。

为了做到这一点,我扩展了PlaySpec和GuiceOneServerPerSuite,并重写方法fakeApplication来创建我的路由并将它们提供给Guice应用程序

class MySpec extends PlaySpec with GuiceOneServerPerSuite {

  override def fakeApplication(): Application =
    GuiceApplicationBuilder().appRoutes(app => {
        case ("POST", "/url/") => app.injector.instanceOf(classOf[DefaultActionBuilder]) { Ok }
      }).globalApp(true).build()


  "Something" should {
    "work well" in {
      val wsClient = app.injector.instanceOf[WSClient]
      val service = new MyService(wsClient)
      service.method() mustBe ""

      app.injector.instanceOf[DBApi].databases().foreach(_.getConnection().close())
    }
  }
}

我有这样的多个测试套件,如果我单独运行它们就可以正常工作,但如果我一起运行它们就会填满连接池,然后一切都失败了:org.postgresql.util.PSQLException:致命:对不起,也是很多客户已经。

我的考虑:我认为这是因为在每个测试套件中都会创建一个新的Play Guice应用程序。我还尝试手动关闭所有数据库的连接,但没有解决问题。

scala playframework
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.