实际上受到 Fransico 的启发(在评论中),我写下了我的知识。我写了自己的答案,它也可能对其他人有所帮助....
首先我想提一下,我回答我的问题——只做集成测试。用黄瓜和硒。并使用茉莉花进行特定的 javascript 测试。
但是,当使用 cucumber (edge) rails (3.1)、capybara 和 selenium 进行集成测试时,您必须注意一些事项:
看,你的所有宝石都更新了!
1)激活你的驱动程序,如果你还没有
功能/支持/capybara.rb
Capybara.javascript_driver = :selenium
2)目前只有 Firefox <=4 可以与 webdriver selenium 一起使用,因为我在从头开始配置和安装每个组件(如机架等)几个小时后才发现。
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了。Find 会自动等待并检查 Ajax 响应以及 dom 查找元素。
4) 为您的 JS/Ajax 响应代码添加您自己的 helper/finder/click 例程,请记住,它“只是”一个集成测试,您可能希望使用 yasmine 或其他 js 测试框架测试您的 JS 代码。
如需更多信息,请查看 Ryan Bates 的截屏视频 (http://railscasts.com),他涵盖了有关测试 Rails 的几个主题;检查 Javascript 的最新版本,例如
或者这个博客: http: //openmonkey.com/2010/04/09/javascript-testing-with-cucumber-capybara/
(thnx francisco)
希望这对其他人也有帮助。