任何人都知道为什么我得到这个RSpec错误?得到零< -

时间:2010-09-02 13:36:34

标签: ruby-on-rails ruby rspec rspec2

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。它保证失败。任何人都知道应该如何写这个?

2 个答案:

答案 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

然后我删除了之前生成的所有规范,并重新生成它们。