在RSpec Controller规范中测试RJS的最佳方法是什么?

时间:2009-01-07 15:59:18

标签: ruby-on-rails rspec

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

例如,我想确保div突出显示为:

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

我也可能会使用Selenium在客户端上更全面地测试它,而Controller测试更像是一种“理智”检查。

答案 1 :(得分:4)

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 

所以这不会处理你问题的visual_effect。然而,ARTS插件确实支持视觉效果。

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

你应该能够将它与rspecs new'ppec / interop / test'结合起来。

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