【发布时间】:2010-09-02 13:36:33
【问题描述】:
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 的脚手架控制器。它保证会失败。有人知道这应该怎么写吗?
【问题讨论】:
标签: ruby-on-rails ruby rspec rspec2