我想使用 Capybara 在我的 Rails 3.1 应用程序中执行简单的请求规范。标准情况都按预期工作,但是当我想测试 Assets 管道生成的 CSS 时,我收到以下错误:
Failure/Error: visit '/assets/main.css'
ActionController::RoutingError:
No route matches [GET] "/assets/main.css"
我认为问题在于测试环境没有提供完整的服务器,因此也没有提供 Assets 的 Sprockets 中间件。 这个问题有解决办法吗?
编辑:现在可能了! 我们更新到了 Rails 3.2.12 和 Capybara 2.0.2,现在这些资源也可以在功能规范中找到。
最佳答案
Phusion 人员在博客中谈到了 render an asset to a string 的可能性。 :
MyApp::Application.assets.find_asset('main.css').body
您也可以在测试中使用它。该解决方案并不理想,并且/因为 Capybara 不再参与,但它有助于在我的特定情况下验证 CSS。欢迎更好的方法!
关于使用 Capybara 测试 Assets 管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8156191/