Пробные тесты Rails на Heroku

Я развернул приложение в Heroku, и все работает отлично. Проблема в том, что я не могу удаленно запускать свои модульные тесты. Я пробовал:

heroku rake test:units

и

heroku rake db:test:prepare

но для обоих я получаю массивную трассировку стека, заканчивая:

rake aborted!
undefined method `[]' for nil:NilClass
/app/[id]/home/.bundle/gems/ruby/1.9.1/gems/activerecord-3.0.3/lib/active_record/railties/databases.rake:429:in `block (3 levels) in <top (required)>'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:634:in `call'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:634:in `block in execute'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:629:in `each'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:629:in `execute'

Я запускаю стек bamboo-mri-1.9.2.

Самое близкое, что я получил до ответа, это сообщение в блоге с 2009 года.

Ответ 1

Heroku не предоставляет тестовую базу данных, поэтому нет простого способа сделать это. Вы могли бы теоретически создать новый экземпляр heroku и взломать задачи рейка, чтобы просто использовать базу данных "production", но я сомневаюсь, что требуемые усилия будут стоить того.

Ответ 2

Heroku devcenter дает объяснение, как управлять промежуточной средой здесь: http://devcenter.heroku.com/articles/multiple-environments

Я не знаю, можно ли запускать модульные тесты, но я прекрасно понимаю, почему вы хотите это сделать.

Ваше приложение Heroku:

  • могут иметь разные камни из вашей локальной системы (насколько я знаю, если вы разрабатываете под Windows, ваш Gemfile.lock игнорируется)
  • может иметь другую ОС (некоторые библиотеки Ruby как IO не ведут себя точно так же в Windows и Linux)
  • может иметь другую версию ruby ​​
  • может иметь другую систему баз данных (кажется, не так просто использовать локальную базу данных с той же конфигурацией, что и та, которую вы используете на Heroku)
  • в более общем плане будет работать в другой системе (версия Linux, ImageMagick и т.д.).

Вы можете протестировать все это с помощью промежуточной среды, но мы могли бы сказать, что для каждого unit test, поэтому я думаю, было бы здорово, если бы мы могли запустить unit test на Heroku.

Ответ 3

Обычным способом является локальное тестирование, а затем развертывание на скрытый экземпляр Heroku ( "постановка" ). Затем вы можете протестировать это скрытое приложение с вашими бета-тестерами, запустить стресс-тесты на нем и так далее. Если вас это устраивает, разверните приложение в своем экземпляре "Производство" Heroku.

Таким образом, тестирование на Heroku возможно и обычно, но не с модульными тестами.

Ответ 4

Heroku не имеет набора тестов, вам действительно нужно тестировать на стороне разработки перед развертыванием в heroku.