Commenti

rspec-given: e se fosse la soluzione?

Tornando a bomba sui miei interrogativi passati, potrei aver trovato una soluzione in grado di permettere una maggiore descrittività ai test -- in stile Gherkin -- ma al tempo stesso "sicura" (ovvero che non utilizzi librerie TDD ancora in stato alpha).

La soluzione si chiama rspec-given è non è altro che una leggera DSL sopra ad RSpec, che permette di utilizzare dei blocchi Given, When e Then.

Esempio d'ordinanza:

 1 describe Stack do
 2 
 3   def stack_with(initial_contents)
 4     stack = Stack.new
 5     initial_contents.each { |item| stack.push(item) }
 6     stack
 7   end
 8 
 9   Given(:stack) { stack_with(initial_contents) }
10 
11   context "when empty" do
12     Given(:initial_contents) { [] }
13     Then { stack.depth.should == 0 }
14 
15     context "when pushing" do
16       When { stack.push(:an_item) }
17 
18       Then { stack.depth.should == 1 }
19       Then { stack.top.should == :an_item }
20     end
21   end
22 
23 end

Direi che la cosa migliore è provarlo per trovarne eventuali lati negativi o brutture. Vi faccio sapere.