[rspec-users] Specifying a few valid values
dchelimsky at gmail.com
Thu Jul 17 09:50:59 EDT 2008
On Jul 17, 2008, at 7:40 AM, Jonathan Leighton wrote:
> On Thu, 2008-07-17 at 07:28 -0500, David Chelimsky wrote:
>> I'm wondering why the examples aren't more specific though. Why is it
>> OK that the action could be one of two possibilities given a specific
>> set of givens?
> Ok well I lied a little bit :)
> I am using it in a story step, specifically the step is "Then the form
> should be shown". I guess I could split them into "Then the new/edit
> form should be shown" but it doesn't seem a huge issue...
Aha. Now that's a horse of a different color. I tend to avoid details
like that in story steps. I prefer to expect what's visible, submit
forms (whatever the action is) and expect to end up in the right place.
Are you familiar with Webrat? It's a tool that allows you to describe
things at a much higher level and takes care of the low level detail
for you. So rather than expecting specific form elements in the story
steps, you just do things like this:
Given I am registered as David with password Secret
And am and Administrator
When I log in with David/Secret
Then I should see Manage Schedules in a list of Things To Do
The interesting step here is "When I sign in with David/Secret":
When /I log in with (.*)\/(.*)/ do |login, password|
fills_in "Login", :with => login
fills_in "Password", :with => password
clicks_button "Log In"
The fills_in method does two things at once: expects to find an item
with either an id of "Login" or with a related form label that has the
text "Login". Then it manipulates the DOM, setting the value of that
element to "David" (in this example). Then #clicks_button finds a
button with the text "Log In", builds a POST from the related DOM
elements and submits the POST.
I use this 100% of the time for Rails stories these days and am
overall very happy with the resulting code.
> Jonathan Leighton
More information about the rspec-users