[rspec-users] render_to_string confusing ControllerSpec
Andrew Selder
aselder at mac.com
Mon Jun 16 22:19:14 EDT 2008
I updated the spec to look like this:
it "should render show template" do
do_get
controller.stub_render(:partial => "/properties/
map_info_box", :object => anything())
response.should render_template('show')
end
and I still get the same failure and back trace.
In addition to not working, the problem with stubbing out that render
to string is that I can't then check for the presence of those strings
in the final output.
Thanks,
Andrew
On Jun 16, 2008, at 10:03 PM, David Chelimsky wrote:
> 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
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
More information about the rspec-users
mailing list