[rspec-users] Controller specs erroneously loading views in edge rails?

Tim Haines tmhaines at gmail.com
Wed Sep 3 06:58:45 EDT 2008


Ian White has just submitted a patch for this.  Thanks Ian.
http://rspec.lighthouseapp.com/projects/5645-rspec/tickets/516

Tim.

On Wed, Sep 3, 2008 at 10:41 AM, Tim Haines <tmhaines at gmail.com> wrote:

> Hi guys,
>
> After updating to edge rails I've just struck this problem too.  I've just
> grabbed fresh updates of rspec, rspec-rails, and rails and I'm receiving a
> few controller spec failures related to view rendering when views shouldn't
> be rendered  (failures relate to mock objects not having expected attributes
> and methods).
>
> I've logged this in lighthouse ->
> http://rspec.lighthouseapp.com/projects/5645-rspec/tickets/516
>
> Here's a copy of the full backtrace of one of the fails:
>
>
> vendor/rails/actionpack/lib/action_controller/routing/route_set.rb:376:in
> `raise_named_route_error'
>
> vendor/rails/actionpack/lib/action_controller/routing/route_set.rb:340:in
> `generate'
>     vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:208:in
> `rewrite_path'
>     vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:187:in
> `rewrite_url'
>     vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:165:in
> `rewrite'
>     vendor/rails/actionpack/lib/action_controller/base.rb:630:in `url_for'
>     vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:85:in
> `send'
>     vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:85:in
> `url_for'
>     (eval):15:in `user_path'
>
> vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb:111:in
> `__send__'
>
> vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb:111:in
> `polymorphic_url'
>
> vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb:118:in
> `polymorphic_path'
>     vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:91:in
> `url_for'
>     vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:228:in
> `link_to'
>     app/views/home/index.html.erb:5
>     app/views/home/index.html.erb:4:in `each'
>     app/views/home/index.html.erb:4
>     vendor/rails/actionpack/lib/action_view/renderable.rb:35:in `send'
>     vendor/rails/actionpack/lib/action_view/renderable.rb:35:in `render'
>     vendor/rails/actionpack/lib/action_view/template.rb:68:in
> `render_template'
>     vendor/rails/actionpack/lib/action_view/base.rb:266:in `orig_render'
>
> vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_view/base.rb:26:in
> `render'
>     vendor/rails/actionpack/lib/action_view/base.rb:369:in
> `_render_with_layout'
>     vendor/rails/actionpack/lib/action_view/base.rb:260:in `orig_render'
>
> vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_view/base.rb:26:in
> `render'
>     vendor/rails/actionpack/lib/action_controller/base.rb:1118:in
> `render_for_file'
>     vendor/rails/actionpack/lib/action_controller/base.rb:881:in
> `render_without_benchmark'
>     vendor/rails/actionpack/lib/action_controller/benchmarking.rb:51:in
> `render'
>
> vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb:8:in
> `realtime'
>     vendor/rails/actionpack/lib/action_controller/benchmarking.rb:51:in
> `render'
>
> vendor/plugins/rspec-rails/lib/spec/rails/example/controller_example_group.rb:213:in
> `render'
>     vendor/rails/actionpack/lib/action_controller/base.rb:853:in
> `render_without_benchmark'
>     vendor/rails/actionpack/lib/action_controller/benchmarking.rb:51:in
> `render'
>
> vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb:8:in
> `realtime'
>     vendor/rails/actionpack/lib/action_controller/benchmarking.rb:51:in
> `render'
>
> vendor/plugins/rspec-rails/lib/spec/rails/example/controller_example_group.rb:213:in
> `render'
>     vendor/rails/actionpack/lib/action_controller/base.rb:1170:in
> `default_render'
>     vendor/rails/actionpack/lib/action_controller/base.rb:1176:in
> `perform_action_without_filters'
>     vendor/rails/actionpack/lib/action_controller/filters.rb:617:in
> `call_filters'
>     vendor/rails/actionpack/lib/action_controller/filters.rb:610:in
> `perform_action_without_benchmark'
>     vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in
> `perform_action_without_rescue'
>
> /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/benchmark.rb:293:in
> `measure'
>     vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in
> `perform_action_without_rescue'
>     vendor/rails/actionpack/lib/action_controller/rescue.rb:202:in
> `perform_action_without_caching'
>
> vendor/rails/actionpack/lib/action_controller/caching/sql_cache.rb:13:in
> `perform_action'
>
> vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:48:in
> `cache'
>     vendor/rails/activerecord/lib/active_record/query_cache.rb:8:in `cache'
>
> vendor/rails/actionpack/lib/action_controller/caching/sql_cache.rb:12:in
> `perform_action'
>     vendor/rails/actionpack/lib/action_controller/base.rb:535:in `send'
>     vendor/rails/actionpack/lib/action_controller/base.rb:535:in
> `process_without_filters'
>
> /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in
> `synchronize'
>     vendor/rails/actionpack/lib/action_controller/base.rb:535:in
> `process_without_filters'
>     vendor/rails/actionpack/lib/action_controller/filters.rb:606:in
> `process_without_session_management_support'
>
> vendor/rails/actionpack/lib/action_controller/session_management.rb:130:in
> `process_without_test'
>     vendor/rails/actionpack/lib/action_controller/test_process.rb:18:in
> `process'
>     vendor/rails/actionpack/lib/action_controller/test_process.rb:400:in
> `process'
>     vendor/rails/actionpack/lib/action_controller/test_process.rb:371:in
> `get'
>     controllers/home_controller_spec.rb:12
>     vendor/plugins/rspec/lib/spec/example/example_methods.rb:83:in
> `instance_eval'
>     vendor/plugins/rspec/lib/spec/example/example_methods.rb:83:in
> `eval_block'
>     vendor/plugins/rspec/lib/spec/example/example_methods.rb:21:in
> `execute'
>
> /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:48:in
> `timeout'
>     vendor/plugins/rspec/lib/spec/example/example_methods.rb:18:in
> `execute'
>     vendor/plugins/rspec/lib/spec/example/example_group_methods.rb:305:in
> `execute_examples'
>     vendor/plugins/rspec/lib/spec/example/example_group_methods.rb:304:in
> `each'
>     vendor/plugins/rspec/lib/spec/example/example_group_methods.rb:304:in
> `execute_examples'
>     vendor/plugins/rspec/lib/spec/example/example_group_methods.rb:132:in
> `run'
>     vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:22:in
> `run'
>     vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:21:in
> `each'
>     vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:21:in
> `run'
>     vendor/plugins/rspec/lib/spec/runner/options.rb:115:in `run_examples'
>     vendor/plugins/rspec/lib/spec.rb:21:in `run'
>     vendor/plugins/rspec/lib/spec/runner.rb:192:in `register_at_exit_hook'
>     controllers/home_controller_spec
>
> On Sun, Aug 24, 2008 at 8:57 AM, Sven Fuchs <svenfuchs at artweb-design.de>wrote:
>
>> Ok, done.
>>
>>
>> http://rspec.lighthouseapp.com/projects/5645-rspec/tickets/508-recent-changes-in-actionpack-break-controller-specs
>>
>> Thanks!
>>
>>
>> On 23.08.2008, at 16:28, David Chelimsky wrote:
>>
>>  There are a number of changes to action pack recently that are
>>> incompatible with rspec. Please report these to lighthouse.
>>>
>>> Thanks,
>>> David
>>>
>>> On Sat, Aug 23, 2008 at 6:12 AM, Sven Fuchs <svenfuchs at artweb-design.de>
>>> wrote:
>>>
>>>> Trying to port an existing app to current Rails edge I've seen similar
>>>> things yesterday. I've also updated RSpec/Rails to recent edge.
>>>>
>>>> Here are two workarounds I've come up with for two of the problems. I'm
>>>> not
>>>> sure if they cause other problems themselves, but maybe they're still
>>>> useful
>>>> as a hint.
>>>>
>>>> http://pastie.org/private/5ueehxiqhdgok0d8udksa
>>>>
>>>> I don't feel familiar enough with RSpec's guts to provide a patch.
>>>>
>>>> #render_partial on ActionView::Base seems to break because the method
>>>> signature has changed.
>>>> #render on ControllerExampleGroup seems to break because #render_file
>>>> apparently has been removed.
>>>>
>>>>
>>>>
>>>> On 23.08.2008, at 00:30, John Reilly wrote:
>>>>
>>>>  Hello,
>>>>>
>>>>> I think I may have found a bug between rspec and edge rails... But I'm
>>>>> new to this so I'm hoping someone else can confirm before I go filing
>>>>> bug reports.
>>>>>
>>>>> Basically, I'm seeing what "appears" to be my controller specs
>>>>> deciding to load the views, even though I haven't called
>>>>> integrate_views.  When I generate a default rspec_scaffold, the specs
>>>>> fail with an ActionView::TemplateError:
>>>>>
>>>>>  % script/generate rspec_scaffold Bike name:string sku:string
>>>>>> ...
>>>>>> rake spec
>>>>>> ...
>>>>>> Mock 'Bike_1017' received unexpected message :name with (no args)
>>>>>> On line #11 of app/views/index.html.erb
>>>>>>
>>>>>
>>>>> If I modify the generated index spec like this, the spec passes:
>>>>>
>>>>> ...snip...
>>>>>
>>>>>>
>>>>>> it "should expose all bikes as @bikes" do
>>>>>> Bike.should_receive(:find).with(:all).and_return([mock_bike])
>>>>>>
>>>>>> # adding these lines cause the spec to pass...
>>>>>> mock_bike.should_receive(:name)
>>>>>> mock_bike.should_receive(:sku)
>>>>>>
>>>>>> get :index
>>>>>> assigns[:bikes].should == [mock_bike]
>>>>>> end
>>>>>>
>>>>>
>>>>> ...snip...
>>>>>
>>>>> While this "fixes" the failures, it's no longer an isolated test of
>>>>> the controller.
>>>>>
>>>>> After spending some time with git-bisect, it looks like this problem
>>>>> was introduced in a commit to edge rails:
>>>>>
>>>>>
>>>>> http://github.com/rails/rails/commit/1129a24caff9f1804c2bff6569c0cbd8598dfa86
>>>>>
>>>>> The default rspec_scaffold tests pass before this commit, and fail
>>>>> after this commit.
>>>>>
>>>>> More details here:
>>>>> http://johnreilly.tumblr.com/post/47016047/rspec-is-mocking-me
>>>>>
>>>>> Am I insane? Or does this happen for anyone else? :-)
>>>>>
>>>>> Thanks,
>>>>> -- John Reilly
>>>>>
>>>>> _______________________________________________
>>>>> rspec-users mailing list
>>>>> rspec-users at rubyforge.org
>>>>> http://rubyforge.org/mailman/listinfo/rspec-users
>>>>>
>>>>
>>>> --
>>>> sven fuchs              svenfuchs at artweb-design.de
>>>> artweb design           http://www.artweb-design.de
>>>> grünberger 65           + 49 (0) 30 - 47 98 69 96 (phone)
>>>> d-10245 berlin          + 49 (0) 171 - 35 20 38 4 (mobile)
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>>
>>
>> --
>> sven fuchs              svenfuchs at artweb-design.de
>> artweb design           http://www.artweb-design.de
>> grünberger 65           + 49 (0) 30 - 47 98 69 96 (phone)
>> d-10245 berlin          + 49 (0) 171 - 35 20 38 4 (mobile)
>>
>>
>>
>>
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20080903/e8baccf7/attachment-0001.html>


More information about the rspec-users mailing list