2014-12-24 2 views
2

Я использую specs2 для тестов интеграции с Scala Play (2.3), и я использую базу данных mysql для тестирования, а не базу данных H2. Мои тестовые примеры используют WithApplication и FakeApplication с переопределением конфигурации db.default.url, чтобы указать базу данных test (mysql).evolutions против тестовой базы данных mysql с параметрами scala play2

Проблема в том, что никакие эволюции не выполняются. Все тестовые случаи взрываются, потому что таблицы не созданы.

Если я запускаю приложение в обычном режиме, а не тестирую, и применяю Evolutions, а затем удаляю эту базу данных и загружаю в тестовую базу данных, все тесты проходят нормально (я очищаю все таблицы между прогонами тестов, чтобы обеспечить чистую базу данных для каждого контрольная работа).

Почему автоматизация не запускается автоматически? Что я могу сделать, чтобы запустить их? Примечание. Я не хочу использовать H2 и InMemoryDatabase. Я хочу использовать mysql для тестов, как и в производстве. Я нашел различные решения в сети для ручного поиска и запуска эволюции, но ни одно из этих решений не поддерживает таблицу play_evolutions, и мне не удалось заставить их правильно работать в Play 2.3.

+0

привет, не могли бы вы представить пример кода, как запустить поддельное приложение с базой данных mysql? – Andrey

ответ

1

Воспроизведение изменений по умолчанию будет выполняться только вручную. Это, очевидно, проблема при тестировании, потому что вам не может быть предложено запустить их. В ваших FakeApplication вам может понадобиться установить следующие под additionalConfiguration:

"evolutionplugin" -> "enabled", 
"applyEvolutions.default" -> true, 
"applyDownEvolutions" -> true 

Так что ваш FakeApplication может выглядеть следующим образом:

val app = FakeApplication(additionalConfiguration = Map(
    "db.default.driver" -> "com.mysql.jdbc.Driver", 
    "db.default.url" -> "jdbc:mysql://localhost/test" 
    "db.default.user" -> "...", 
    "db.default.password" -> "...", 
    "evolutionplugin" -> "enabled", 
    "applyEvolutions" -> "false" 
)) 

Кроме того, вы также можете отказаться от обычая FakeApplication и Откат к тому, что в application.conf ,

Обратите внимание, что это только приведет к эволюции, когда говорится, что play_evolutions не существует или является непоследовательным. Поэтому, если вы хотите очистить его после каждого теста, вам нужно будет сами отбросить таблицы.

0

Добавьте следующую настройку в ваш конфигурационный файл

applyEvolutions.default=true 

, где «по умолчанию» это имя вашей базы данных.

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