Dado que ejecutar pruebas directamente en Heroku parece no ser tan trivial, recurrí a la prueba local de la aplicación Heroku, utilizando llamadas de HTTParty en lugar de las habituales de Capybara.
Esto puede funcionar muy bien, al menos para las pruebas de integración.
Por ejemplo, este es el método que utilizo en las definiciones de paso cuando la ejecución de pruebas locales convencionales contra la aplicación local:
def my_http_request(httpmethod, path, body = '')
send httpmethod, path, body
end
y este es el método que utilizo cuando la ejecución de pruebas locales contra la aplicación 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
me carga una o la otra en el mundo pepino, basado en una opción específica pasado a pepino en sí y ubicado en un perfil relevante (por lo que yo simplemente puedo llamar cucumber -p heroku
cuando quiero probar contra Heroku).
Por supuesto, en el segundo caso también tengo que cuidar de inicialización de la base de datos Heroku antes de cada escenario, por ejemplo llamando a algo como esto en un 'antes' gancho:
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