2

次の仕様を実行すると、テーブルが存在します。最終的にロールバックされたトランザクション内にのみ存在する必要があるため、存在しないと予想していました。

import org.specs2.mutable.Specification
import scalikejdbc.{DB, NamedDB}
import scalikejdbc.specs2.mutable.AutoRollback

class MyQuerySpec extends Specification with ArbitraryInput {

  sequential

  DBs.setup('myDB)

  "creating the table" in new AutoRollback {
    override def db(): DB = NamedDB('myDB).toDB()
    private val tableName = s"test_${UUID.randomUUID().toString.replaceAll("-", "_")}"
    private val query = new MyQuery(tableName)

    query.createTable
    ok
  }
}

DBs.setup('myDB)は例の一部ではありません。しかし、それを削除すると例外が発生しますjava.lang.IllegalStateException: Connection pool is not yet initialized.(name:'myDB)

のソースMyQuery.create:

SQL(s"DROP TABLE IF EXISTS $tableName").execute().apply()
SQL(s"""
     |CREATE TABLE $tableName (
     |  id               bigint PRIMARY KEY
     |)""".stripMargin).execute().apply()

構成:

db {
  myDB {
    driver = "org.postgresql.Driver"
    url = "****"
    user = "****"
    password = "****"
    poolInitialSize = 1
    poolMaxSize = 300
    poolConnectionTimeoutMillis = 120000
    poolValidationQuery = "select 1 as one"
    poolFactoryName = "commons-dbcp2"
  }
}

ScalikeJDBC v2.2.9

4

1 に答える 1