Очистка тестовой базы данных между модульными тестами и функциональными испытаниями в направляющих (factory_girl)

Должно быть очень, очень легко записать тест, и одинаково легкий выполнить их. Это, мне, является единственной самой важной функцией ремня безопасности тестирования. Если кто-то должен включить GUI или переход через набор обручей для записи теста, они не будут использовать его.

20
задан cbrulak 5 March 2010 в 19:13
поделиться

3 ответа

Попробуйте написать это в своем test / test_helper.rb

eval IO.read(File.expand_path(File.dirname(__FILE__) + "/../Rakefile"))
class Test::Unit::TestCase
 ....
 #db:test:prepare won't work, don't know why,
 #as DROP DATABASE won't execute (me on PostgreSQL).
 #even if I write,
 #ActiveRecord::Base.connection.disconnect!
 Rake::Task["db:reset"].invoke
end

Это не рекомендуемое решение. Делает тесты медленнее, но работает.

12
ответ дан 30 November 2019 в 00:27
поделиться

Подключаемый модуль rails под названием «override_rake_task» может использоваться для переопределения задачи Rake «test», которая определяется внутри if Rails gem. Это очень простая задача, которая выполняет 3 другие задачи одна за другой: тест: блоки , тест: функционалы и тест: интеграция . Вы можете включить выполнение задачи «db: test: purge», чтобы очистить тестовую базу данных перед выполнением test: functionals.

Очевидно, если вы не используете этот плагин и если вы определяете задачу в своем приложении rails с тем же именем , rake выполнит обе задачи: стандартную и вашу.

может использоваться для отмены «теста» задачи Rake, которая определена внутри гема Rails. Это очень простая задача, которая выполняет 3 другие задачи одна за другой: тест: блоки , тест: функционалы и тест: интеграция . Вы можете включить выполнение задачи «db: test: purge», чтобы очистить тестовую базу данных перед выполнением test: functionals.

Очевидно, если вы не используете этот плагин и если вы определяете задачу в своем приложении rails с тем же именем , rake выполнит обе задачи: стандартную и вашу.

может использоваться для отмены «теста» задачи Rake, которая определена внутри гема Rails. Это очень простая задача, которая выполняет 3 другие задачи одну за другой: тест: блоки , тест: функционалы и тест: интеграция . Вы можете включить выполнение задачи «db: test: purge», чтобы очистить тестовую базу данных перед выполнением test: functionals.

Очевидно, если вы не используете этот плагин и если вы определяете задачу в своем приложении rails с тем же именем , rake выполнит обе задачи: стандартную и вашу.

4
ответ дан 30 November 2019 в 00:27
поделиться

The above solutions didn't work for me. If you are trying to reach out to an external database running unit tests can give some weird errors. For some reason they do not get cleared after running the test so you have to run rake db:test:purge after running the unit tests. Put this in your Rakefile and it should fix it.

Rake::Task["db:test:prepare"].enhance do
  Rake::Task["db:test:purge"].invoke
end
2
ответ дан 30 November 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: