我正在使用 Rails 3.2.8
- 宝石'jquery-rails','2.1.2'
- 宝石'rails3-jquery-autocomplete','1.0.9'
- 宝石'rspec-rails','2.11.4'
- 宝石'水豚','1.1.3'
- 宝石“水豚-webkit”,“0.12.1”
我最近将选择下拉列表转换为自动完成(使用 rails3-jquery-autocomplete)并尝试更新我的请求规范以填写自动完成。
我的方法是创建一个助手,如本要点所示:
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
等待下拉菜单没有帮助。
我在这里看到capybara-webkit 有一个相关但有点老的问题,当一个字段被填写时,它会立即变得模糊,这当然会阻止自动完成选择列表的出现。但这似乎与其他已使其工作的人不相符。
目前是否可以使用 RSpec 和 Capybara 测试包含 rails3-jquery-autocomplete 字段的表单?如何?如果没有,有没有办法手动填写相应的隐藏id
字段,以便我仍然可以测试表单是否创建了正确的数据?