[rspec-users] Using Mechanize in Story Step Implementations

Jay Levitt lists-rspec at shopwatch.org
Thu Oct 25 14:49:26 EDT 2007

On 10/24/2007 4:42 PM, James Hughes wrote:
> On 10/24/07, Andy Watts <andywatts at yahoo.com> wrote:
>> Hi,
>> Thought this might be of interest story writers.
>> The mechanize plugin seems to play nice with RSpec.
>> The following mix of methods seems to work just fine.
>> I especially like the helpers for populating forms.
>> agent = WWW::Mechanize.new
>> page = agent.get 'http://www.gmail.com'
>> page.should have_tag('form', :count => 1)
>> form = page.forms.first
>> form.email = 'd at d.com'
>> page = agent.submit form
>> Could make for some nice step implementations.
>> Almost seems too easy, is there anything that mechanize will break?
> Can't see why this wouldn't work, and it might be useful for setting
> up more complex interactions, but for this simple case why not just do
> something like:
> post '/form_action', {:email => 'd at d.com'}

Well, one advantage is that the former tests three things: 1. that the 
get works, 2. that the get and post share the "email" field, and 3. that 
the post works.

I had a recent bug where I actually broke the "get" completely 
(crashed), and I'm sure we've all seen bugs where we change a field name 
in one case but not the other, so it's good to test all three.

I hadn't thought of using Mechanize, though - there's a form_test_helper 
plugin that does the same thing without the HTTP, and I've been meaning 
to try getting it working on RSpec.

Jay Levitt

More information about the rspec-users mailing list