【发布时间】:2013-01-07 11:17:51
【问题描述】:
在 Rails 应用程序中,我尝试使用 Capybara 和 capybara-webkit 驱动程序在 Rspec 中测试 Bootstrap modal 和 jQuery TokenInput field。有问题的部分如下:
click_link 'Create Team Modal'
sleep 1
within('div#modal_popup') do
fill_in 'input#token-input-team_name', with: 'Fancy team name'
sleep 1
fill_in 'input#token-input-team_name', with: '\t'
sleep 1
click_button 'Create Team'
end
page.should have_content('Fancy team name')
- 点击按钮获取模态
- TokenInput 填写团队名称
- 模拟 Tab 键以将其选中
- 创建团队
- 验证名称是否显示在页面上
这仅适用于所有sleep 1s;否则 Capybara 在have_content 崩溃,最终导致服务器错误,因为永远无法正确选择团队名称。然而,其他没有 TokenInput 字段的 Bootstrap 模式在加载之前不需要sleep 1。
说了这么多,有什么办法可以摆脱睡眠并让这一切正常进行吗? Capybara 2 取出了wait_until(有充分的理由),因为它会在默认等待时间内等待测试某些东西……但这似乎并没有反映在我的上述测试中;就好像水豚在进入/退出这个模式时没有参与那个等待期。有人对此有经验吗?使用 Rails 3.2.10、Rspec 2.12、Capybara 2、capybara-webkit 0.14.0、TokenInput 1.6。
【问题讨论】:
标签: ruby-on-rails twitter-bootstrap capybara jquery-tokeninput capybara-webkit