ruby-on-rails – 如何使用rails cucumber,rspec,capybara测试视图中的动态部分(dhtml)?

我想要两者,通过
Javascript测试Ajax内容和正常的切换内容.

我的设置是:

- Rails 3.1
- Rspec (Edge)
- Cucumber (Edge)
- Capybara (Edge)

例如,如果选择了某种类型的此模型,我想要一个仅显示特定字段的表单:

文章可以是外部文章(网址)
或内部的.
键入“externa_url”应显示2个输入字段和2个复选框,然后键入“article”,
相反,它有一个body textarea.

什么是最好的方法来实现这一点,还有测试?

它应该是服务器端的,以便加载部分,如果选择了某种文章类型,
或者使用javascript,切换所需的html?

最佳答案 实际上受到Fransico(在评论中)的启发,我写下了我的知识.

我写自己的答案,也可以帮助别人….

首先我要提一下,我回答我的问题 – 仅进行集成测试.
用黄瓜和硒.
和jasmine一起进行特定的javascript测试.

但是,当使用黄瓜(边缘)导轨(3.1),水豚和硒进行集成测试时,您必须注意以下事项:

看,你已经更新了所有的宝石!

1)激活你的驱动程序,如果你还没有

功能/支持/ capybara.rb

Capybara.javascript_driver = :selenium

2)目前只有Firefox< = 4使用webdriver selenium for rails,因为我发现几个小时后从头开始配置和安装每个组件,如机架等. 3)Capybara本身不会处理太多,这可以帮助你点击例如在列表上,特别是jquery-tokeninput. 3.1)我使用它来从列表中的标记中选择一个项目:

When(/^I select the option containing "([^\"]*)" in the Tag List/) do |text|
  find("li:contains('#{text}')").click
end

您可能会发现此方法使用“locate”而不是find,请勿尝试此操作,api / driver已更改为find.
查找自动等待并检查Ajax响应以及dom查找元素.

4)为您的JS / Ajax响应代码添加自己的帮助器/查找器/单击例程,
请记住,它只是“集成测试”,您可能希望使用yasmine或其他js测试框架测试您的JS代码.

有关更多信息,请查看Ryan Bates的屏幕录像(http://railscasts.com),他介绍了几个关于测试Rails的主题;检查Javascript的最新版本,例如

或者这个博客:http://openmonkey.com/2010/04/09/javascript-testing-with-cucumber-capybara/
(thnx francisco)

希望这对其他人也有帮助.

点赞