Выполнение юнит-тестов Rails на Heroku - PullRequest
10 голосов
/ 18 февраля 2011

Я развернул приложение в 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 год .

Ответы [ 4 ]

7 голосов
/ 18 февраля 2011

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

6 голосов
/ 26 марта 2012

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

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

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

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

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

5 голосов
/ 18 февраля 2011

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

Так что тестирование на Heroku возможно и обычно, но не с юнит-тестами.

2 голосов
/ 18 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...