【问题标题】:Can someone describe to me what RSpec 2 is doing in this?有人可以向我描述一下 RSpec 2 在这方面做了什么吗?
【发布时间】:2010-09-03 16:48:08
【问题描述】:

我一直在尝试深入研究 RSpec 2,但其自动生成的控制器规范不适用于任何版本的 RSpec 2 与任何版本的 Ruby 或任何版本的 Rails。也许我遗漏了一些明显的东西?

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

这是从rails g scaffold Category自动生成的

RSpec 返回这个:

Failures:
   1) CategoriesController GET show assigns the requested category as @category
    Failure/Error: assigns(:category).should be(mock_category)
    expected Category_1002, got nil
    # ./spec/controllers/categories_controller_spec.rb:21
    # /Library/Ruby/Gems/1.8/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `inject'

为什么这个模拟/存根返回 nil

更新

这是来自我的控制器的 show 方法:

def show
   @category = Category.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    format.xml  { render :xml => @category }
  end
end

谢谢!

【问题讨论】:

  • 我不知道.as_null_object 做了什么,也不知道它为什么会出现,但这似乎不应该出现。尝试删除它。
  • 能把index方法的内容贴出来吗?
  • @zetetic,我是个白痴,我发布了错误的示例。上面的只是略有不同。有什么你想从中看到的方法吗?
  • @rspeicher,也不完全确定它的作用,但它是否存在并没有什么不同。

标签: ruby-on-rails testing ruby-on-rails-3 rspec rspec2


【解决方案1】:

嗯。好吧,如果有什么问题,我肯定看不到。也许根本没有达到show 行动?是否有任何before_filter 语句妨碍?

您可以尝试添加一些测试以查看是否已完成分配。喜欢

controller.should_receive(:show)

btw .as_null_object 告诉模拟忽略你不存根的消息。这有助于依赖于验证或其他约束的对象,否则您必须将其存根才能获得可以测试的对象。但请注意不要忽略您应该测试的消息。

【讨论】:

  • 我想我已经推断出它缺少生成器的一些基本部分。因为我无法重现问题,所以我发现由于项目是从 Rails 3 beta 和新的 Rspec 开始的,所以生成器会发生冲突。而且我不确定如何从项目中剥离 rspec 并重新生成它们。
  • 您听说过“永远不要相信瘾君子”这句话吗?对此我补充说:“永远不要相信发电机”:)
【解决方案2】:

RSpec 在 Rails3 beta 和 RSpec 2 beta.10 到 Rails3 版本和 RSpec 2 beta.20 之间存在一些严重的冲突。

我尝试复制和粘贴脚手架之间的差异,但我通过删除所有规范并重新生成它们来完全清理站点。卸载 haml,只为 rails 3 安装 haml-rails

所有规范现在都运行了。

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 2010-12-17
    • 2010-10-25
    • 2017-03-21
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多