> I've been doing something similar. I think the benefit of having half
> the steps(each can be negated) wins over the small impact it has on step
> readability. Personally I started adding stuff like this(perhaps not as
> DRY but simple enough):
>
> Then /^the correspondence should (not )?have inclusions$/ do |negate|
> if negate
> @outcorr.inclusions.should be_empty
> else
> @outcorr.inclusions.should_not be_empty
> end
> end
What's the advantage of having half the steps?
They should be grouped in a nice way in files anyway.
This one's quite readable, though.
>> yes, the regexp in the step matcher is a good one to dry it up
>>
>> So I end up with this one:
>>
>> Then /^I (should|should not) see the people search form$/ do |maybe|
>> people_search_form_should_exist maybe == "should"
>> end
should ... exist ... maybe... should
Unreadable?
>> and the method:
>>
>> def people_search_form_should_exist it_should_exist
>> _not = "_not" unless it_should_exist
>>
>> response.send "should#{_not}".to_sym, have_tag('form#frmSearch')
>> end
Convoluted.
>> only because I find it easier to read (when I don't need to jump to
>> the method), but yours maybe faster (shorter it is), I could come back
>> to it later and benchmark both
>>
>> If you don't mind using the #send (I was trying to help you get rid of
>> it) then just do this:
>>
>>
>> Then /^I (should|should not) see the people search form$/ do |maybe|
>> response.send maybe.underscore.to_sym, have_tag('form#frmSearch')
>> end
If you go with this kind of abstraction, this solution and the topmost
in this mail at least do not introduce extra methods to deal with the
should/should not. more methods to have fewer steps can not be an advantage,
I think.
But the readbility of
Then /^I should see the people search form$/ do
response.should have_tag('form#peopleSearch')
end
Then /^I should not see the people search form$/ do
response.should_not have_tag('form#peopleSearch')
end
is higher for me, as I only need to think what the have_tag means,
but do not have to parse the should/not, send, underscore and to_sym.
The difference in readability is from about 2 seconds to at least
10 seconds. That's a disadvantage that I'm not willing to pay for
any advantage of having "fewer steps".
Bye,
Kero.
___
How can I change the world if I can't even change myself?
-- Faithless, Salva Mea
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users