ruby-on-rails – 通过Capybara(v2)与Bootstrap模式交互的麻烦

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 通过Capybara(v2)与Bootstrap模式交互的麻烦前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Rails应用程序中,我试图使用Capybara和capybara-webkit驱动程序在Rspec中使用 jQuery TokenInput field测试一个 Bootstrap modal.有关部分如下:
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键按下来选择它
>创建团队
>验证名称显示页面

这只适用于所有睡眠1的地方;否则Capybara在had_content中崩溃,最终导致服务器错误,因为无法正确选择团队名称.然而,没有TokenInput字段的其他Bootstrap模式在加载之前不需要睡眠1.

所有这一切,有什么办法摆脱睡眠,这样正常吗? Capybara 2拿出wait_until(有很好的理由),因为它将在默认的等待时间内等待测试某件事情,但这似乎并没有反映在我上面的测试中;就好像水豚进入/退出这个模式时不参与那个等待期.任何人都有这方面的经验?使用Rails 3.2.10,Rspec 2.12,Capybara 2,capybara-webkit 0.14.0,TokenInput 1.6.

解决方法

尝试在test env,layouts / applicaiton.html.erb中禁用动画
<% if Rails.env.test? %>
 <style type="text/css">
    .modal.fade,.fade {
      -webkit-transition: opacity 0.01s;
      -moz-transition: opacity 0.01s;
      -ms-transition: opacity 0.01s;
      -o-transition: opacity 0.01s;
      transition: opacity 0.01s;
    }
 </style>
<%end%>

猜你在找的Ruby相关文章