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%>

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...