rspec – Capybara似乎没有等待(因为它应该做!?)(Async ajax事
我们有一个后台进程,当处理(从另一个服务器,UNIX进程)完成时,我们轮询并重新加载图表.
我不能让Capybrara正确等待(尽管普遍认为应该这样做) 它是一个AJAX事件,它轮询数据库,然后在完成后刷新页面内容.即使是测试,时间也是多种多样的 – 睡眠n.seconds有时会起作用,但并非总是如此. >我尝试过expect(page.has_content),断言page.has_text,find和has_content. 我发现很多文章声称它应该在默认的轮询/超时内等待.我们应该检查一下吗?请注意,我们通过Poltergeist无头. 没有CSS对象在显示上发生变化,它只是一个字符串(这是从一个puts page.html来调试测试) 由此 <div class="bill-summary-strap-line"> Calculating your bill costs <br/> </div> 对此 <div class="bill-summary-strap-line"> Calculating finished <br/> </div> 我们缺少什么? 下面的RSpec代码,真的希望有人有一些指导解决了这类问题. puts page.html # test #assert page.has_text?('Calculating your bill costs') expect(page).to have_content 'Calculating your bill costs' page.driver.render("#{LOGDIR}/output1.png",:full => true) sleep 30.seconds # would like to remove this puts page.html # test output #page.should have_content("Calculating finished") #expect(page.has_content? "Calculating finished").to be_true assert page.has_text?("Calculating finished") page.driver.render("#{LOGDIR}/output2.png",:full => true) 解决方法
在spec_helper中,您有以下代码:
Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app,{debug: false,:default_wait_time => 30,:timeout => 90}) end 我的猜测是这个超时基本上被忽略了,因为Capybara本身将根据Capybara.default_wait_time设置超时.这可以解释为什么你的时间在规范内设置为2. poltergeist docs建议您在spec_helper中使用它: require 'capybara/poltergeist' Capybara.javascript_driver = :poltergeist 您不需要注册或重新注册驱动程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |