【问题标题】:Anyone know why I'm getting this RSpec error? getting nil <--有人知道为什么我会收到此 RSpec 错误吗?得到零 <--
【发布时间】: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


    【解决方案1】:

    rspec-rails 有一个针对自身运行的规范套件,它使用所有生成器并运行所有生成的规范并且它们都通过了,所以这应该可以工作。你使用的是什么版本的 rspec、rails 和 ruby​​?您使用什么命令来生成 Category 模型和 CategoriesController?

    【讨论】:

    • 哇!我无法告诉你我有多么荣幸得到你的回答。我是你工作的忠实粉丝。我更新了上面的答案。
    【解决方案2】:

    冲突来自 Rspec Beta 10 和 Rspec Beta 20 以及 Rails 3 Beta4 到 Rails 3 版本之间发生的冲突。

    为了解决这个问题,我卸载了haml,并安装了haml-rails

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

    【讨论】:

      猜你喜欢
      • 2011-07-23
      • 2023-01-02
      • 2023-01-29
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 2018-06-22
      • 2016-01-01
      相关资源
      最近更新 更多