Scrivere test per il codice delle applicazioni è qualcosa che tutti i programmatori dovrebbero avere familiarità nel fare, indipendentemente dal linguaggio o framework scelto. RSpec è un’incredibile suite di test e DSL (Domain-Specific Language) costruito in Ruby, che permette di scrivere test unitari con facilità usando un set di metodi predefiniti. La mia introduzione alla scrittura di codice in Ruby era strettamente legata all’esperienza di eseguire religiosamente RSpec per testare ciò che avevo scritto; e così quando ho iniziato ad imparare Rails, continuare ad usare RSpec ha reso la transizione più naturale e senza problemi. Per default, Rails usa il framework di test MiniTest. Discuteremo come impostare un nuovo progetto Rails per usare RSpec, e poi esploreremo l’uso di Capybara per testare le nostre viste.
Primo, creeremo un nuovo progetto Rails eseguendo rails new NAME -T -B
, dove NAME è il percorso della directory del progetto che dovrebbe essere creato. Il flag -T
specifica che Rails non dovrebbe impostare alcun framework di test per il nostro nuovo progetto, che è esattamente ciò che vogliamo. Il flag -B
indica a Rails di saltare l’esecuzione di bundle install
a questo punto. Successivamente, dobbiamo modificare il nostro Gemfile per includere quanto segue:
group :development, :test do
gem 'rspec-rails'
gem 'capybara'
end
Questo aggiunge sia RSpec che Capybara ai nostri ambienti di sviluppo e di test. A questo punto, eseguite bundle
per installare le gemme e qualsiasi dipendenza di cui il progetto ha bisogno. Mi piace entrare in rails console
a questo punto solo per controllare che tutto funzioni, e se non funziona – torno al mio Gemfile e correggo qualsiasi problema.
Ora che abbiamo il nostro scheletro di progetto a posto, il prossimo passo è quello di preparare la nostra suite di test. A questo punto basta eseguire rails generate rspec:install
per creare la directory spec
e la struttura di file necessaria. L’ultimo passo è dire ai nostri test di usare Capybara. In spec/rails_helper.rb
, aggiungete quanto segue:
require 'capybara/rspec'
Questo è tutto per la configurazione! Prima di andare avanti, facciamo il commit dei cambiamenti che abbiamo fatto al nostro progetto: git add . && git commit -m "initial commit"
. Immergiamoci nella creazione di un controller e facciamo qualche test!