0
私は、Playアプリケーションコンテキスト(H2を使用)を通してすべてを起動して実行することなく、Slick Playアプリケーションをテストしようとしています。これは、私がH2接続を共有し、前もって多くのテストDB準備をしたいからです。DatabaseConfigProviderのインプリメンテーションを作成する
これを行うには、DatabaseConfigProvider
の実装が必要です。この場合、JdbcProfile
設定が必要です。私は拡張しています特徴は次のとおりです。
trait DatabaseConfigProvider {
def get[P <: BasicProfile]: DatabaseConfig[P]
}
しかし、私はチェックを入力するDatabaseConfigProvider
のメソッドのシグネチャを取得することはできません。
class TestDbProvider(config:DatabaseConfig[JdbcProfile]) extends DatabaseConfigProvider {
def get[P <: BasicProfile]: DatabaseConfig[P] = config
}
上記の実装と他の多くの変形はすべて失敗します。
[error] RepositoryTest.scala:78: type mismatch;
[error] found : slick.backend.DatabaseConfig[slick.driver.JdbcProfile]
[error] required: slick.backend.DatabaseConfig[P]
[error] def get[P <: BasicProfile]: DatabaseConfig[P] = config
[error] ^
[error] one error found
[error] (api/test:compileIncremental) Compilation failed
もっと悪い変種:
// Fails
class TestDbProvider(config:DatabaseConfig[JdbcProfile]) extends DatabaseConfigProvider {
def get[P <: BasicProfile]: DatabaseConfig[JdbcProfile] = config
}
// Fails
class TestDbProvider[P <: BasicProfile](config:DatabaseConfig[P]) extends DatabaseConfigProvider {
def get[P]: DatabaseConfig[P] = config
}
// Fails
class TestDbProvider(config:DatabaseConfig[JdbcProfile]) extends DatabaseConfigProvider {
def get[JdbcProfile]: DatabaseConfig[JdbcProfile] = config
}
DatabaseConfigProvider
の実装を行うためのScalaでのトリックは何ですか? Slick/Playのコードベースを見ると、そのような具体的な実装の例はありません。