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
どちらが返されます:
1) CategoriesController GET show assigns the requested category as @category
Failure/Error: assigns(:category).should be(mock_category)
expected Category_1002, got nil
これはrspecが設定したすぐに使えるコントローラであるため、ここで混乱しています。なぜこれが失敗するのでしょうか?
私のバージョン:
Rails 3.0.0.beta4
Ruby 1.8.7
RSpec 2.0.0.beta.10
これも試してみましたが、まったく同じ再現可能なエラーでした:
Rails 3.0.0
Ruby 1.8.7
RSpec 2.0.0.beta.20
仕様を生成するために使用したコマンドはrails g scaffold Category
私のapplication.rbで
config.generators do |g|
g.template_engine :haml
g.test_framework :rspec, :fixture => true, :views => false
end
アップデート
これは、RSpec2 を使用する Rails 3 による scaffolded コントローラーに当てはまります。失敗することが保証されています。これはどのように書けばよいかわかる方はいらっしゃいますか?