[rspec-users] Re-use scenarios from another story file?
ben at benmabey.com
Fri Jul 4 22:20:06 EDT 2008
Zach Dennis wrote:
> A short experience report regarding this thread:
> Early on when stories were introduced to rspec's code base I started
> using them, and I tried some different techniques to see what the
> sweet spot was for using stories in actual development. To do some of
> this I made modifications to rspec (this was before stories were
> released officially)
> In my experience I found that trying to build up a highly re-usable
> set of steps caused a lot more overhead, both in the creation of new
> features and in the maintenance of ongoing development or changes to
> existing features. In practice has been much easier for me to build
> reusability in the form of helper methods which sit behind steps, and
> even to allow yourself to have very simple (even one line) step
> One problem I noticed I ran into was that I spent too much time trying
> to organize and group reusable sets of steps. This made it difficult
> when one story changed in how it did something, but another one did
> not, and it made my stories rely on several step files (ie: steps_for
> => [:site_navigation, :project_navigation, :project_creation, etc.]).
> Sometimes I would end up having to reorganize, or split one step into
> two, and then go find all places where things would be affected by
> this, etc.
> I also found that by focusing on this kind of step reusability I was
> writing much more granular stories (ie: implicit story style). When
> trying out what is now known as the declarative story style I have
> found that introducing new features and changing existing features
> takes much less time when all of my steps for a story are in as few as
> possible step files (typically just one step file). When I notice that
> two stories both have a scenario where the implementation of a step is
> the same, I pull that out into a helper much like David suggested. Now
> if one of those stories changes, you can change its step w/o affecting
> any others.
> In summary, don't focus on step reusability across stories, instead
> pull out helpers while allowing the steps to be defined separately for
> their respecive stories. This will make it easier to introduce new
> features and maintain/change existing features over the lifetime of
> the app.
+1. I have had the exact same experience. Reusing story steps too
aggressively tends to lead to awkward stories that have a higher
maintenance cost for several reasons.
More information about the rspec-users