2017-04-27 66 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