Capybara + RSpec仅在控制器规格中看到空白页。 为什么?

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

谢谢!

我的控制器规格

我的spec_helper.rb

我的Gemfile

您需要明确告诉控制器规范您希望它呈现视图以使其工作。 将您的规范更新为如下所示:

require 'spec_helper' describe PostsController do render_views # Render this controller's views during spec execution. before do @post = Fabricate :post end # ... end 

这在rspec的自述文件中有所描述。 有关更详细的视图,请参阅’render_views’的 rspec-rails’黄瓜function 。

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

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

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

希望有所帮助。