Поскольку запуск тестов непосредственно в 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