I think there is a fine balance between adding too much abstraction to go all the way to make non-technical readers perfectly comfortable (and becoming brain-dead), and pushing them abit to make both technical writers and non-technical readers comfortable.
And it depends alot on what is the intent of the scenario, eg. if it is describing invalid email when creating a new user, i would probably compact: " Given I am logged in as 'admin' When I go to /users And I follow 'New User' Then I should see 'Create User' page ... " Into a single line: " Given I am creating a new user ... " And use cucmber's nested steps within the above step to get rid of the excessive noise, to he;p myself and the reader to focus on the current context. TY == On Tue, Dec 23, 2008 at 1:55 AM, Star Trader <[email protected]> wrote: > > I think that "when I go to /login" is to low-level. Why not write > "When I login" or "Given I am logged in" and fill in all the steps the > it takes a user to login. This is more reusable and is perfectly > understandable to non-technical readers. > > On Dec 20, 10:12 am, Jon Hancock <[email protected]> wrote: >> TY, Michael, >> thanks for the continued input on this. I'll play with these ideas. >> Jon >> >> On Dec 21, 12:33 am, "Tze Yang Ng" <[email protected]> wrote: >> >> > When writing cucumber's features, we have to really think like the >> > end-user, and write stuff that end-users will understand. >> >> > When editing a user, the natural flow goes like this: >> > " >> > Given the following users exists in the system ... >> > And I go to /users >> > When I click on 'Edit' for Cathy >> > Then I should go to 'Edit User' Page >> > Given I fill in 'Name*' with 'Carol' >> > When I click on 'Save' >> > Then I should go to 'Manage Users' Page >> > And I should see 'User successfully updated' >> > And I should see Cathy updated as Carol >> > " >> >> > When creating a new user, the natural flow goes like this: >> > " >> > Given I go to /users >> > When I click on 'New User' >> > Then I should go to 'Create User' Page >> > Given I fill in 'Name*' with 'Carol' >> > And I fill in ... >> > And I fill in ... >> > When I click on 'Save' >> > Then I should go to 'Manage Users' Page >> > And I should see 'User successfully created' >> > And I should see Carol >> > " >> >> > U can see the gist athttp://gist.github.com/38355 >> >> > Hope this helps to clear things up. >> >> > :] TY >> >> > == >> >> > On Sat, Dec 20, 2008 at 11:42 PM, Jon Hancock <[email protected]> >> > wrote: >> >> > > Thanks, I'll check out your salad ;). >> > > As to the first issue, I think you make my point well. If you want to >> > > push the implementation issues into the work steps or even lower, you >> > > should not have the statement: >> > > "When I go to /login" >> > > Which states a specific path. What if the path is "/sessions/new". >> > > What if the statement was: >> > > "When I go to update a post" and because your following resource path >> > > rules, the path is actually "/posts/123/edit". Do we train the people >> > > writing the scenarios on the default naming of CRUD based resources? >> > > How much magic do we need to put into the work steps to allow natural >> > > language scenarios? >> > > For many of us, the person writing the tests is also the developer and >> > > there is little point in building too much abstraction. Either way, a >> > > little abstraction is still useful. But to much abstraction? >> > > This is why I like using the name of the route, as the real path is >> > > already buried in implementation, your router.rb file. >> >> > > I recall very similar discussions when use cases started to become >> > > popular in the early to mid 90s. The issue was "How much should the >> > > use case language be natural language versus using nomenclature of the >> > > developers?" It turns out the people writing use case are the same >> > > people assisting with defining the object model and their names. This >> > > is the perfect point where language needs to be bridged between user >> > > and developer. It is where nomenclature gets defined and refined. >> >> > > thanks, Jon >> >> > > On Dec 20, 12:15 pm, "Tze Yang Ng" <[email protected]> wrote: >> > >> Just voicing my thoughts: >> >> > >> > 1 - Instead of "When I go to /login" I would like the option of >> > >> > writing "When I go to login" or When I go to :login" whereby if I >> > >> > don't pass in something that looks like a path, it will use the merb >> > >> > url() method to to get the path by name. Does someone have a hacked >> > >> > version of common_webrat.rb >> >> > >> ME: personally i don't like this idea, cucumber's features is supposed >> > >> to bridge the gap between developers (technical) and end-users >> > >> (non-technical) ... an expression like "When I go to /login" is >> > >> obvious to all parties abt the intention of the step, that is, >> > >> accessing of "/login". >> >> > >> Whereas "When I go to login" or "When I go to :login" don't, there is >> > >> an additional layer introduced, the non-technical guys may ask, how do >> > >> i go to "login" or ":login" ??? >> >> > >> > 2 - Not sure the appropriate way to load sample data for cucumber >> > >> > tests. Are these called fixtures in cucumber? What are others doing >> > >> > here for datamapper test data? >> >> > >> ME: Quite sometime ago, i done something >> > >> athttp://github.com/ngty/ty_cucumber_salad, haven't got the chance to >> > >> update it due to many other distractions in life. Anyway, u can find >> > >> the answers to ur this particular question there. >> >> > >> Cheers >> >> > >> == >> >> > >> On Sat, Dec 20, 2008 at 9:51 AM, Jon Hancock <[email protected]> >> > >> wrote: >> >> > >> > I finally have the basics of cucumber working with Scenario Outlines. >> > >> > There are two things I need next: >> >> > >> > 1 - Instead of "When I go to /login" I would like the option of >> > >> > writing "When I go to login" or When I go to :login" whereby if I >> > >> > don't pass in something that looks like a path, it will use the merb >> > >> > url() method to to get the path by name. Does someone have a hacked >> > >> > version of common_webrat.rb >> >> > >> > 2 - Not sure the appropriate way to load sample data for cucumber >> > >> > tests. Are these called fixtures in cucumber? What are others doing >> > >> > here for datamapper test data? >> >> > >> > thanks, Jon >> >> > >> --http://ngty77.blogspot.com >> >> > --http://ngty77.blogspot.com > > > > -- http://ngty77.blogspot.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "merb" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/merb?hl=en -~----------~----~----~----~------~----~------~--~---
