2014-02-20 5 views
0

Я хочу запустить тесты модели без изменения моей базы данных. Я использую базу данных mysql без эволюции.Укажите базу данных в тесте

Можно ли указать другую базу данных для моих тестов? Или скопируйте схему mysql в базу данных памяти?

Я попытался сделать отдельный конфиг и использовать его как это:

play test -Dconfig.resource=application.test.conf 

без прибыли.

+0

Разве это не '-Dconfig.file = application.test.conf'? – Carsten

ответ

1

Вы можете использовать несколько баз данных в игровом приложении. здесь я привожу пример для трех баз данных в приложении. (прод, Dev, тест)

записи конф файл для изготовления (в каталоге конфа)

prod.conf

include "application.conf" 

db.default.driver=org.postgresql.Driver                    
db.default.url="jdbc:postgresql://localhost:5432/productiondatabase" 
db.default.user="postgres" 
db.default.password="postgres" 

запись конф файл для разработки

dev.conf

include "application.conf" 

db.default.driver=org.postgresql.Driver                    
db.default.url="jdbc:postgresql://localhost:5432/developmentdatabase" 
db.default.user="postgres" 
db.default.password="postgres" 

запись в файл конф для испытания

test.conf

include "application.conf" 

db.default.driver=org.h2.Driver 
db.default.url="jdbc:h2:mem:test" 
db.default.user=sa 
db.default.password="" 

Теперь написать Global.scala (в каталоге приложения) тест игры

import play.api._ 
import play.api.Logger 
import com.typesafe.config.ConfigFactory 
import java.io.File 

object Global extends GlobalSettings {  

     override def onLoadConfig(config: Configuration, path: File, classloader:  ClassLoader,mode: Mode.Mode): Configuration = { 

    Logger.info("Application configuration file is loading with " + mode.toString + " mode") 

    val modeSpecificConfig = config ++ Configuration(ConfigFactory.load(s"${mode.toString.toLowerCase}.conf")) 
    super.onLoadConfig(modeSpecificConfig, path, classloader, mode) 

    } 
} 

$ => его автоматически подключаться к тестовой базе данных.

$ play run => он автоматически подключается к базе данных разработчиков.

$ play start => он автоматически подключается к базе данных prod.

+0

Как установить схему для моего тестового db (копия с dev)? –

+1

Создайте сценарий схемы базы данных (из dev или как хотите), например mysql.sql и: db.default.url = "" "jdbc: h2: mem: mysqldb; MODE = MySQL; IGNORECASE = TRUE; INIT = RUNSCRIPT FROM 'scriptdirpath/mysql.sql' "" " – Sky

+0

Спасибо. Я закончил тем, что использовал эволюцию. –

Смежные вопросы