https://github.com/jimweirich/rspec-given
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.