2014-03-07 3 views
0

Я использую slick 2.0.0 в своем приложении и в dev/prod, он работает нормально.Slick: Autogenerate H2-DDL в тестовом примере

В тестовом режиме я хочу автогенерировать базу данных H2 (из определений гладких таблиц) и использовать ее для своих тестовых случаев. Я использую scalatest 2.0.

Определение базы данных (application.conf) для тестирования является следующая

db{ 
    ... 
    test { 
    driver=org.h2.Driver 
    url="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1" 
    } 
} 

В начале теста, я называю

Slick.db.withTransaction { implicit s => 
    StaticQuery.updateNA("DROP ALL OBJECTS;") 

    val createStatement = models.slick.Tables.ddl.createStatements.mkString("",";",";") 
    println("CREATE: "+createStatement) 
    StaticQuery.updateNA(createStatement) 
} 

(в тестовом режиме, Slick.db точки в DB («тест») из плагина play-slick, поэтому он просто берет DataSource, определенный в application.conf в db.test)

При запуске тестового примера я получаю следующий вывод:

CREATE: [...]; create table `mytable` (`field1` VARCHAR(254) NOT NULL,`field2` VARCHAR(254) NOT NULL,`field3` VARCHAR(254) NOT NULL,`ID` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY); [...] 
[info] - should [...] *** FAILED *** 
[info] org.h2.jdbc.JdbcSQLException: Tabelle "MYTABLE" nicht gefunden 
[info] Table "MYTABLE" not found; SQL statement: 
[info] INSERT INTO `mytable` (`field1`,`field2`,`field3`) VALUES (?,?,?) [42102-172] 
[info] at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) 
[info] at org.h2.message.DbException.get(DbException.java:169) 
[info] at org.h2.message.DbException.get(DbException.java:146) 
[info] at org.h2.command.Parser.readTableOrView(Parser.java:4824) 
[info] at org.h2.command.Parser.readTableOrView(Parser.java:4802) 
[info] at org.h2.command.Parser.parseInsert(Parser.java:966) 
[info] at org.h2.command.Parser.parsePrepared(Parser.java:375) 
[info] at org.h2.command.Parser.parse(Parser.java:279) 
[info] at org.h2.command.Parser.parse(Parser.java:251) 
[info] at org.h2.command.Parser.prepareCommand(Parser.java:218) 
[info] ... 
[info] ScalaTest 

Таким образом, он определенно создает таблицу и обращается к той же таблице (хотя в верхнем регистре). Есть ли проблема? Не думайте так. Как я могу сделать эту работу?

Если это проблема, существует ли способ сказать slick для генерации или использования таблиц с одним и тем же случаем?

ответ

0

Должно быть

StaticQuery.updateNA(createStatement).execute 

вместо

StaticQuery.updateNA(createStatement)