使用 Capybara 测试 Assets 管道

标签 testing ruby-on-rails-3.2 ruby-on-rails-3.1 capybara asset-pipeline

我想使用 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/

相关文章:

mysql - 如何在删除另一个数据库时更新另一个数据库中列字符串的值

ruby-on-rails - 在我的表单隐藏字段中发送数据

ruby-on-rails - Phusion Passenger 在使用 rvm 升级 Ruby 和 Rails 后抛出错误

python - 如何在测试 REST API 时使用 token 认证

ruby - 当我在我的模型上运行 RSpec 时,为什么会出现 "strip"和 "downcase"的未定义方法错误?

ruby-on-rails - Rails actionmailer,在特定时间发送邮件

ruby-on-rails - ZenTest 4.9.3 显示为无效的 gemspec

ruby-on-rails-3.1 - 未捕获的类型错误 : Cannot call method 'extend' of undefined

scala - 使用@Inject 注释导致var 被识别为@Test?

unit-testing - 应该测试哪一层抽象