【发布时间】:2015-07-10 08:16:51
【问题描述】:
将应用程序迁移到 Play 2.4 并在应用程序的控制器中引入依赖注入后,运行单元测试时出现“池已关闭”。受影响的测试是这样的:
@RunWith(classOf[JUnitRunner])
class ApplicationSpec extends Specification {
"Application" should {
"doSomething" in running(TestUtil.app) {
val myId = IdGen.newId("someone")
...
}
}
}
IdGen 类看起来像这样:
object IdGen {
def newId(name: String): ClientCredentials = {
DB.withTransaction("myDb") { implicit conn =>
...
}
}
}
使用
调用 DB.withTransaction() 时测试失败[error] Pool has been shutdown (HikariDataSource.java:89)
[error] com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:89)
[error] play.api.db.DefaultDatabase.getConnection(Databases.scala:143)
[error] play.api.db.DefaultDatabase.withConnection(Databases.scala:153)
[error] play.api.db.DefaultDatabase.withTransaction(Databases.scala:162)
[error] play.api.db.DB$.withTransaction(DB.scala:72)
[error] com.example.idGen$.newId...
我正在用
初始化 TestUtil.appobject TestUtil {
lazy val app = new GuiceApplicationBuilder()
.configure(defaultConfig ++ Helpers.inMemoryDatabase("myDB"))
.bindings(new TestModule) // Mock injections for test
.build
}
很明显,我缺少一些东西来启动和运行数据库以进行测试,但我不确定是什么。
【问题讨论】:
标签: scala playframework specs2 playframework-2.4 hikaricp