[rspec-users] render_to_string confusing ControllerSpec

David Chelimsky dchelimsky at gmail.com
Mon Jun 16 22:03:55 EDT 2008


On Jun 16, 2008, at 8:59 PM, Andrew Selder wrote:

> Here's the back trace
>
> 1)
> 'SearchesController handling GET /searches/1 should render show  
> template' FAILED
> expected "show", got "properties/_map_info_box"
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> expectations.rb:52:in `fail_with'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> expectations/handler.rb:25:in `handle_matcher'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> expectations/extensions/object.rb:31:in `should'
> ./spec/controllers/searches_controller_spec.rb:26:
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> example/example_methods.rb:84:in `instance_eval'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> example/example_methods.rb:84:in `run_with_description_capturing'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> example/example_methods.rb:21:in `execute'
> /opt/local/lib/ruby/1.8/timeout.rb:48:in `timeout'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> example/example_methods.rb:18:in `execute'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> example/example_group_methods.rb:303:in `execute_examples'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> example/example_group_methods.rb:302:in `each'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> example/example_group_methods.rb:302:in `execute_examples'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> example/example_group_methods.rb:130:in `run'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> runner/example_group_runner.rb:22:in `run'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> runner/example_group_runner.rb:21:in `each'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> runner/example_group_runner.rb:21:in `run'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> runner/options.rb:106:in `run_examples'
> /Users/aselder/BostonLogic/one_system/vendor/plugins/rspec/lib/spec/ 
> runner/command_line.rb:19:in `run'
> script/spec:4:
>
> And here's the controller action:
>
>  def show
>    @search = Search.find(params[:id])
>    if @search.too_many_results?
>      message_to_new "Your search returned too many results (#{@search.count 
> }). Please narrow your criteria and search again."
>      return
>    elsif @search.no_results?
>      message_to_new "Your search returned no results. Please change  
> your criteria and search again."
>      return
>    end
>    init_map
>    @props = @search.do_search
>    @markers = []
>    @props.each do |prop|
>      coords = prop.latlng
>      unless coords.lat == 0 || coords.lng == 0
>        prop.info_box = render_to_string(:partial => "/properties/ 
> map_info_box", :object => prop)

This is the line that's causing you trouble. Try stubbing this one out  
as well:

response.stub_render(:partial => "/properties/map_info_box", :object  
=> anything())

Let us know if it works.

Cheers,
David

>
>        mark = prop.has_photos? ? "green" : "red"
>        marker = GMarker.new(coords, :title =>  
> prop_help.bubble_header(prop), :info_window => prop.info_box, :icon  
> => Variable.new(mark))
>        @map.overlay_init marker
>        @markers << marker
>      end
>    end
>    unless @markers.empty?
>      @map.center_zoom_on_points_init(*(@markers.collect {|x|  
> x.point}))
>    else
>      @map.center_zoom_init(@search.center, 12)
>    end
>  end
>
> Thanks,
>
> Andrew
>
> On Jun 16, 2008, at 9:34 PM, David Chelimsky wrote:
>
>> On Jun 16, 2008, at 2:58 PM, Andrew Selder wrote:
>>
>>> Hi all,
>>>
>>> I have a controller I'm trying to spec out, and I'm running into  
>>> some issues with render_to_string.
>>>
>>> Basically, the show gets an array of objects, calls  
>>> render_to_string for each of them, and then renders the show  
>>> template.
>>>
>>> So I have the standard spec:
>>>
>>>
>>>  it "should render show template" do
>>>    do_get
>>>    response.should render_template('show')
>>>  end
>>>
>>>
>>> but when I run the spec I get the following failure:
>>>
>>> 'SearchesController handling GET /searches/1 should render show  
>>> template' FAILED
>>> expected "show", got "properties/_map_info_box"
>>>
>>>
>>> Does anybody have any ideas?
>>
>> Please post the controller action and the full backtrace:
>>
>> script/spec spec/controller/path/to/the/spec.rb -fsb
>>
>> Thx
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users



More information about the rspec-users mailing list