【发布时间】:2012-11-02 00:53:17
【问题描述】:
我正在使用 Rails 3.2.8 和
- gem 'jquery-rails', '2.1.2'
- gem 'rails3-jquery-autocomplete', '1.0.9'
- gem 'rspec-rails', '2.11.4'
- gem '水豚','1.1.3'
- gem 'capybara-webkit', '0.12.1'
我最近将选择下拉菜单转换为自动完成(使用 rails3-jquery-autocomplete),并正在尝试更新我的请求规范以填写自动完成。
我的方法是创建一个 helper,如 this gist 所示:
def fill_autocomplete(field, options = {})
fill_in field, :with => options[:with]
selector = "ul.ui-autocomplete a:contains('#{options[:select]}')"
page.should have_selector selector
page.execute_script "$(\"#{selector}\").mouseenter().click()"
end
如果我使用 Webkit 进行测试,测试会失败并显示以下消息:
expected css "ul.ui-autocomplete a:contains('Firstname Lastname')" to return something.
如果我使用 Selenium 进行测试,当我在 Firefox 中进行测试时,我确实没有看到下拉选择列表出现。添加sleep 3 以等待下拉菜单没有帮助。
我看到here 有一个与 capybara-webkit 相关但有些旧的问题,当一个字段被填写时,它会立即变得模糊,这当然会阻止自动完成选择列表出现。但这似乎与其他已使其工作的人不相符。
目前是否可以使用 RSpec 和 Capybara 测试包含 rails3-jquery-autocomplete 字段的表单?如何?如果没有,有没有办法手动填写相应的隐藏 id 字段,以便我仍然可以测试表单是否创建了正确的数据?
【问题讨论】:
标签: jquery ruby-on-rails jquery-ui rspec capybara