【问题标题】:Best way to test RJS in RSpec Controller specs?在 RSpec 控制器规范中测试 RJS 的最佳方法是什么?
【发布时间】:2009-01-07 15:59:18
【问题描述】:

确保在控制器操作中生成正确的 RJS 的最佳方法是什么?

例如,我想确保这样突出显示一个 div:

def new
  render :update do |page|
    page.visual_effect :highlight, :some_div
  end
end

咆哮: 这很快成为我使用 RSpec 一年后对它感到厌倦的原因之一。这应该是一个简单的问题,但似乎没有人能回答。

我一再被告知 RSpec 指定行为,而我在这里尝试做的只是“测试代码”。据我所知,突出显示 :some_div 是一种行为。

【问题讨论】:

    标签: ruby-on-rails rspec


    【解决方案1】:

    是否无法为响应的输出设置控制器测试并查找一些 javascript 格式?

      xhr :get, :new
      response.should be_success
      response.should have_text("... test for JS response ...")
    

    我也可能会使用 Selenium 在客户端上对此进行更全面的测试,而 Controller 测试更像是一种“健全性”检查。

    【讨论】:

    • 这个我试过了,但我只能真正测试视觉效果;不是replace_html等。我可以测试正在被替换的东西,但不是部分名称、本地人等。
    • 是的,这并不理想......我倾向于将大部分测试推到 Selenium 上,只是将 Controller 测试保持在非常高的水平,测试一般应用程序流程。
    【解决方案2】:

    rspec 为您提供了包装 assert_select_rjs 的 have_rjs 助手。以下是一些细节:

    http://jonathan.tron.name/2007/11/24/rspec-and-inline-rjs

    不幸的是 assert_select_rjs 只涵盖:

    :replace, :replace_html, :show, :hide, :toggle, :remove and :insert_html 
    

    所以这不会处理您问题中的视觉效果。不过 ARTS 插件确实支持视觉效果。

    http://github.com/timocratic/arts/tree/master

    您应该能够将其与 rspecs new 'spec/interop/test' 结合使用。

    http://blog.davidchelimsky.net/2009/2/2/rspec-works-with-test-unit

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      相关资源
      最近更新 更多