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

どちらが返されます:

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 コントローラーに当てはまります。失敗することが保証されています。これはどのように書けばよいかわかる方はいらっしゃいますか?

4

2 に答える 2

1

rspec-rails には、それ自体に対して実行される spec-suite があり、すべてのジェネレーターを使用し、生成されたすべての spec を実行し、すべて合格するため、これは機能するはずです。rspec、rails、ruby のどのバージョンを使用していますか? Category モデルと CategoriesController を生成するために使用したコマンドは何ですか?

于 2010-09-02T14:22:10.437 に答える
0

この競合は、Rspec Beta 10 と Rspec Beta 20、および Rails 3 Beta4 と Rails 3 リリースの間で発生した競合に由来します。

これを解決するために、 をアンインストールしてhaml、 をインストールしhaml-railsました。

次に、以前に生成されたすべてのスペックを削除し、それらを再生成しました。

于 2010-09-04T13:31:14.510 に答える