2017-04-27 67 views
0

我有斯卡拉控制器的以下播放:注射JDBC连接:模拟播放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) 

这是如何实现的?

+0

你可以看看http://acolyte.eu.org/ – cchantep

回答

0

声明这样说:

val mockDB = Databases(
     driver = "com.mysql.jdbc.Driver", 
     url = "jdbc:mysql://localhost/db0001" 
    ) 
0
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