Come devo fare con le dipendenze in linea quando si esegue Rspec offline?
-
25-09-2019 - |
Domanda
Vorrei correre RSpec per testare il mio codice sia quando sono connesso al web e, quando non lo sono.
Purtroppo ci sono alcuni test nell'applicazione che dipendono da avere una connessione attiva - l'invio di e-mail, l'integrazione di Facebook, ecc
C'è un modo best-practice per creare una linea / ambiente di test in linea o si tratta di cattiva pratica? A giudicare da quanto poco posso trovare su questo sul web Sto indovinando quest'ultimo.
Soluzione
In genere in situazioni del genere che si sarebbe deridere le parti del codice che di connessione al di fuori dell'applicazione. Questo vi permette di testare contro i risultati attesi dal servizio / sistema che si sta connettendo. E 'anche più veloce per eseguire test.
C'è un breve tutorial su beffardo con RSpec qui ma sono sicuro che si può trovare un sacco da soli.
Per la prova che le email vengono inviate ci sono altri approcci se si sta inviando attraverso ActionMailer. C'è una sezione su che in rotaie testare guida .
EDIT (in risposta a un commento):
Si potrebbe mettere un metodo in TestHelper
a test eseguiti solo quando si è online. Qualcosa di simile:
def when_online
if test_remote_connectivity
yield
else
puts "Skipping test offline."
end
end
Poi si può chiamare come:
def test_facebook
when_online do
.....
end
end
Non so se ho del tutto sostengono, ma si potrebbe fare quello che vuoi!
Altri suggerimenti
Si potrebbe usare webmock all'interno delle prove / specifiche che non si desidera la connessione alla risorsa remota.