[LRUG] Writing readable feature tests with RSpec

Murray Steele murray.steele at gmail.com
Thu Jul 31 12:29:10 PDT 2014


On 30 July 2014 17:32, Sam Livingston-Gray <geeksam at gmail.com> wrote:

> You might also find yourself wanting to separate out responsibilities by
> topic area, so that you wind up writing step code like:
>
> step_driver.given.i_am_logged_in_as 'sales_rep'
> step_driver.when.i_have_net_revenue '$20,000'
> step_driver.when.commissions_are_calculated
> step_driver.then.i_receive_payout_of '$5'
>

I don’t get the benefit of this; all that step_driver.[giv|[w|t]h]en seems
sort of noisy.  Why would you do that instead of just something like:

i_am_logged_in_as 'sales_rep'
i_have_net_revenue '$20,000'

calculate_commissions

i_should_receive_payout_of '$5’

I admit, I’m not exactly clear on what problem Paul was originally
describing, nor am I clear anymore if we’re talking about cucumber or rspec
features.  If we’re talking cucumber, then it doesn’t seem so awful as the
actual step name is what we’ll see in the test so these extra objects and
methods are not in the way.  However, if we’re talking rspec features then
I don’t understand the motivation for introducing the line noise as it
reduces the readability of the spec.

I’m sure there’s a good reason and I’m just missing something.

Forgive the use of the “should” in my re-write, but I couldn’t think of a
better word to indicate that the final method is an assertion.  Perhaps
this is enough motivation for the noise?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lrug.org/pipermail/chat-lrug.org/attachments/20140731/397aa997/attachment.html>


More information about the Chat mailing list