views:

73

answers:

2
def mock_category(stubs={})
  @mock_category ||= mock_model(Category, stubs).as_null_object
end

describe "GET show" do
  it "assigns the requested category as @category" do
    Category.stub(:find).with("37") { mock_category }
    get :show, :id => "37"
    assigns(:category).should be(mock_category)
  end
end

Which returns :

1) CategoriesController GET show assigns the requested category as @category
   Failure/Error: assigns(:category).should be(mock_category)
   expected Category_1002, got nil

I'm confused here, because this is a right out of the box controller that rspec set up. Why could this be failing?

My versions:

Rails 3.0.0.beta4
Ruby 1.8.7
RSpec 2.0.0.beta.10

Also tried this, same exact reproducible error with :

Rails 3.0.0
Ruby 1.8.7
RSpec 2.0.0.beta.20

The command I used to generate the specs were rails g scaffold Category

In my application.rb

config.generators do |g|
  g.template_engine :haml
  g.test_framework :rspec, :fixture => true, :views => false
end

UPDATE

This goes for any scaffolded controller by Rails 3, with RSpec2. Its guarenteed to fail. Anyone know how this is supposed to be written?

+1  A: 

rspec-rails has a spec-suite it runs against itself that uses all the generators and runs all the generated specs and they all pass, so this should work. What versions of rspec, rails, and ruby are you using? What commands did you use to generate the Category model and CategoriesController?

David Chelimsky
Wow! I can't tell you how honored I am to be answered by you. I'm a huge fan of your work. I updated my answer above.
Trip
A: 

The conflict comes from conflicts that occurred between Rspec Beta 10 and Rspec Beta 20, and Rails 3 Beta4, to Rails 3 release.

To solve this, I uninstalled haml, and installed haml-rails.

Then I deleted all the specs that were previously generated, and regenerated them.

Trip