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
更新
这适用于Rails 3的任何脚手架控制器,RSpec2。它保证失败。任何人都知道应该如何写这个?
答案 0 :(得分:1)
rspec-rails有一个针对自身运行的规范,它使用所有生成器并运行所有生成的规范并且它们都通过,所以这应该有效。您使用的是什么版本的rspec,rails和ruby?你用什么命令来生成Category模型和CategoriesController?
答案 1 :(得分:0)
冲突来自于Rspec Beta 10和Rspec Beta 20以及Rails 3 Beta4与Rails 3发布之间发生的冲突。
要解决此问题,我已卸载haml
,并已安装haml-rails
。
然后我删除了之前生成的所有规范,并重新生成它们。