我正在尝试测试一个Slick Play应用程序,而不必启动并通过Play Application上下文运行所有内容(使用H2)。这是因为我想共享H2连接,并在手头做很多测试DB准备。
DatabaseConfigProvider
实施在这种情况下,我需要一个
JdbcProfile
配置。我要介绍的特点是:
trait DatabaseConfigProvider {
def get[P <: BasicProfile]: DatabaseConfig[P]
}
然而,我无法获得
数据库配置提供程序
的方法进行类型检查。
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
}
Scala实现
数据库配置提供程序
? 纵观Slick/Play的代码基础,没有这样一个具体的实现示例。