[rspec-users] How To Drive Out AJAX Functionality in a Rails View

Phlip phlip2005 at gmail.com
Tue May 12 09:33:19 EDT 2009


Lee Longmore wrote:
> I am new to RSpec and have just started to drive out my first Rails view 
> using a spec. I have used the The RSpec Book (beta) to do the basic 
> stuff like testing for the presence of a field but I am unsure where to 
> start for driving out some AJAX functionality.
> 
> In the view, I will have a text field that a user can enter a name into 
> and then click on a link to check the availability of this name or 
> otherwise. I plan to implement the check as an AJAX request, returning 
> an HTML snippet or 'available' or 'not available'.

gem install nokogiri rkelly assert2
...
require 'assert2/rjs'

   specify 'a simple passing assertion works' do
     xhr :get, :xhr_availability, :name => 'masone'
     js = @response.body
     js.should send_js_to(:replace_html, 'label_7', /available/)

     js.should send_js_to(:replace_html, 'label_7'){
                 span /available/
                 }
   end

The first send_js_to just checks for a regexp to match the payload of the 
Element.update call. The second one uses {} to generate a Nokogiri Builder 
snippet of HTML, and match that. Here it's just span, but it could have been 
more complex HTML. Google assert_xhtml for more on that.

> I would appreciate some help on what sort of examples one might write 
> and the various mocks, stubs and helpers etc that can be used. Or 
> alternatively a pointer to some existing information/tutorials on this 
> topic.

The RSpec community, in my exalted opinion, mocks too much! If you can't use the 
real thing, it's too coupled, so break it up!

-- 
   Phlip
   http://flea.sourceforge.net/resume.html



More information about the rspec-users mailing list