RSpec è il framework di test più amato in Ruby. La sua forza è la leggibilità: un test si legge quasi come una frase in inglese.
RSpec.describe Launch do
describe "#successful?" do
it "e' true quando lo status e' success" do
launch = Launch.new(status: "success")
expect(launch.successful?).to be true
end
it "e' false altrimenti" do
expect(Launch.new(status: "failure").successful?).to be false
end
end
end
describe raggruppa, it descrive un comportamento, expect(...).to ... fa l'asserzione. Lanci rspec e hai la conferma (o la smentita) che il codice fa ciò che dici.
Il valore vero non è "trovare bug": è progettare meglio. Se un metodo è difficile da testare, di solito è mal disegnato. Scrivere il test prima ti costringe a pensare all'interfaccia. E quando rifattorizzi, i test ti dicono se hai rotto qualcosa.