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
。 - 渲染视图可能会大大减慢测试的执行速度。
……不是说你不应该这样做,只是说你应该清楚你为什么这么做。
希望有所帮助。