我有以下的功能,用于注入JDBC连接:
class MyController @Inject() (db1: play.api.db.Database) extends Controller {
// some code
}在我的application.conf中,我有相关的配置:
# JDBC configuration
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost:3306/db0001"
db.default.username=root
db.default.password=xxxxxxx现在,我需要的是在一个ScalaTest测试中注入一个不同的数据库(也是在application.conf中定义的)。应在试验中声明如下:
val controller = new MyController (mockDB)如何才能做到这一点?
发布于 2017-04-27 05:18:53
声明如下:
val mockDB = Databases(
driver = "com.mysql.jdbc.Driver",
url = "jdbc:mysql://localhost/db0001"
)发布于 2017-04-27 10:54:55
val config : Config = ConfigFactory.parseString(
"""test-db {
| driver = "slick.driver.H2Driver$"
| db = {
| driver = "org.h2.Driver"
| url = "jdbc:h2:mem:testDB"
| }
|}
|""".stripMargin)
val dbConfig: DatabaseConfig[JdbcProfile] = DatabaseConfig.forConfig[JdbcProfile]("test-db", config)
val db = dbConfig.db
lazy val app = new GuiceApplicationBuilder()
.overrides(bind[Database].toInstance(db))
.build发布于 2019-01-14 16:25:57
你应该问问自己:
如果你对#2的回答是“是”,你可以使用ScalaMock
class Test extends MockFactory {
val mockDB = mock[DatabaseConfig[JdbcProfile]]
(mockDb.db.run _) expects(*) returning(/*The value you want to return goes here*/)
val controller = new MyController(mockDB)
}https://stackoverflow.com/questions/43648731
复制相似问题