我用Rails 3.2.8与rails3-jquery-autocomplete:如何使用RSpec和Capybara进行测试?
- 宝石 'jQuery的轨道', '2.1.2'
- 宝石 'Rails3中,jQuery的自动完成', '1.0.9'
- 宝石'RSpec的护栏', '2.11.4'
- 宝石 '水豚', '1.1.3'
- 宝石 '水豚 - WebKit的', '0.12.1'
我最近转换一个选择下拉到自动完成(我们ing rails3-jquery-autocomplete),并试图更新我的请求规格以填写自动完成。
我的方法是创建一个帮助如图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
,这样我仍然可以测试该表单是否创建了正确的数据?
是的,它没有与Webkit的工作。我在capybara + poltergeist(webkit env)上测试它,它在has_selector验证中崩溃。当我通过截屏视频进行调试时,发现自动完成项目已生成,但页面对象无法识别它 – raykin
由于':contains'无效W3C CSS选择器(这是仅jQuery)。我使用http:// stackoverflow中列出的解决方案修复了它。com/questions/6355586/testing-jquery-autocomplete-ui-with-cucumber根据我的名字 –