Должно быть очень, очень легко записать тест, и одинаково легкий выполнить их. Это, мне, является единственной самой важной функцией ремня безопасности тестирования. Если кто-то должен включить GUI или переход через набор обручей для записи теста, они не будут использовать его.
Попробуйте написать это в своем 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
Это не рекомендуемое решение. Делает тесты медленнее, но работает.
Подключаемый модуль 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 выполнит обе задачи: стандартную и вашу.
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