我想要两者,通过
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)
希望这对其他人也有帮助.