Запускай огуречные тесты на героку - PullRequest
7 голосов
/ 11 сентября 2010

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

Есть ли у кого-нибудь опыт такого сценария?Rake -T говорит мне, что «задача по поиску огурца недоступна (огурец не установлен)», хотя в моем файле .gems я указал огурцыЯ подхожу к этому не с того угла?

Есть идеи или предложения?

Ответы [ 4 ]

3 голосов
/ 23 сентября 2010

Вы можете использовать отдельный экземпляр Heroku и развернуть там свое приложение. После этого вы сможете запускать свои тесты с помощью rake heroku.

Вы можете использовать параметр --app в командной строке heroku, чтобы выбрать экземпляр для запуска команд. Просто не удаляйте базу данных prod случайно.

1 голос
/ 16 сентября 2010

Это потребует создания, изменения и последующего удаления тестовой базы данных, и поскольку Heroku игнорирует файл database.yml, это будет невозможно вообще.

Вы можете попробовать запустить приложение втестировать среду, установив ее в консоли, и тогда вы сможете запускать тесты

heroku config:add RACK_ENV=test

, но даже если вы заставите это работать, попрощайтесь с вашей производственной базой данных, так как я уверен, что Heroku сделает этоСнова переопределите файл database.yml и используйте базу данных, автоматически назначенную вашему приложению.

Вы можете также рассмотреть вопрос о создании второго приложения на Heroku только для тестирования.

0 голосов
/ 12 февраля 2013

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

Это может хорошо работать, по крайней мере, для интеграционных тестов.

Например, этот метод я использую в определениях шагов при запуске обычных локальных тестов для локального приложения:

  def my_http_request(httpmethod, path, body = '')
    send httpmethod, path, body
  end

и этот метод я использую при запуске локальных тестов для приложения Heroku:

  def my_http_request(httpmethod, path, body = '')
    options = body.blank? ? { :headers => {"Content-Length" => "0"} } : { :body => body }
    @last_response = HTTParty.send httpmethod, 'https://lit-*****-6305.herokuapp.com' + path, options
  end

Я загружаю одну или другую в мир огурцов, основываясь на определенной опции, переданной самому огурцу и настроенной в соответствующем профиле (чтобы я мог просто позвонить cucumber -p heroku, когда я хочу проверить на Heroku). *

Конечно, во втором случае я также должен позаботиться об инициализации базы данных Heroku перед каждым сценарием, например, вызывая что-то вроде этого в хуке 'before':

  def start_my_heroku_tests
    @@db = PGconn.open(:host => 'ec2-54-**-****-44.compute-1.amazonaws.com', :port => 5432, :dbname => 'd4d********rmi4k', :user => 'llcm*******jcyh', :password => '7FN_************gcxq')
    @@db.exec "TRUNCATE sources"
    @@db.exec "TRUNCATE posts"
  end
0 голосов
/ 15 сентября 2010

Является ли камень cucumber также в вашем манифесте?

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