Poiché i test eseguiti direttamente su Heroku non sembrano così banali, ho fatto ricorso a test locali sull'app Heroku, utilizzando le chiamate HTTParty invece delle solite chiamate Capybara.
Questo può funzionare bene, almeno per i test di integrazione.
Ad esempio, questo è il metodo che uso nelle definizioni passo durante l'esecuzione di test locali convenzionali contro l'applicazione locale:
def my_http_request(httpmethod, path, body = '')
send httpmethod, path, body
end
e questo è il metodo che uso durante l'esecuzione test locali contro l'applicazione 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
che carico uno o l'altro nel mondo cetriolo, sulla base di una specifica opzione passata a cetriolo stesso e impostare in un profilo rilevante (in modo che io posso semplicemente chiamare cucumber -p heroku
quando voglio confrontare con Heroku).
Naturalmente, nel secondo caso devo anche a prendersi cura di inizializzazione del database Heroku prima di ogni scenario, chiamando per esempio qualcosa di simile in un 'prima' gancio:
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