[rspec-users] Controller specs erroneously loading views in edge rails?
John Reilly
john.j.reilly at gmail.com
Fri Aug 22 18:30:18 EDT 2008
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
More information about the rspec-users
mailing list