Capybara + RSpec只能看到控制器规格中的空白页面。为什么?

时间:2011-05-09 04:44:28

标签: ruby-on-rails ruby tdd rspec capybara

我正在尝试为简单的控制器编写控制器规范。但是,Capybara没有看到任何页面内容。但是,在我的浏览器中查看网站的页面工作得很好。我做错了什么?

吨。汉克斯!

My controller spec

My spec_helper.rb

My Gemfile

1 个答案:

答案 0 :(得分:14)

您需要明确告诉控制器规范您希望它呈现视图才能使其正常工作。更新您的规范如下:

require 'spec_helper'

describe PostsController do
  render_views # Render this controller's views during spec execution.

  before do
    @post = Fabricate :post
  end

  # ...
end

这在rspec的readme中有所描述。有关更详细的视图,请参阅rspec-rails'cucumber feature for 'render_views'

这只是提醒一句。有这样的原因,这不是默认行为:

  • 可以说,你通过与控制器同时测试视图来混合两个问题。 Ryan Bigg(见评论)建议你的测试可能更好地被认为是集成测试,它通常存在于spec/integration而不是spec/controller
  • 渲染视图可能会大大减慢测试的执行速度。

...不是说你不应该这样做,只是说你应该清楚你为什么

希望有所帮助。