加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 在更改为capybara-webkit后单次测试失败

发布时间:2020-12-17 03:03:24 所属栏目:百科 来源:网络整理
导读:我已经为我的rails 3.2应用程序编写了一些RSpec测试,因为我被浏览器弹出了ich试图从firefox改为capybara-webkit. 在此之后,所有测试仍在运行,除了一个.失败的线是: expect { click_button "Create" }.to change(Answer,:count).by(count) 如果我删除了expec
我已经为我的rails 3.2应用程序编写了一些RSpec测试,因为我被浏览器弹出了ich试图从firefox改为capybara-webkit.
在此之后,所有测试仍在运行,除了一个.失败的线是:

expect { click_button "Create" }.to change(Answer,:count).by(count)

如果我删除了expect并添加了一个方法来截取前后的截图,我可以看到测试运行正常.但是,如果我通过调试器进入低谷,日志会显示在第二个屏幕截图行之后创建记录.我可以永远等待click_button,并在执行第一行后运行相应的Controller操作.

“创建”按钮是标准的html按钮,创建操作中不涉及JS.某人对这种奇怪的行为有解释吗?

解决方法

Capybara将点击操作发送到服务器和测试检查数据库之间存在竞争条件.

解决此问题的最简单方法是在检查之前等待:

expect { click_button "Create"; sleep 2 }.to change(Answer,:count).by(count)

我不喜欢这个.测试这个的更好方法是从最终用户的角度进行检查.

例如,单击“创建”后,用户是否在答案页面上看到答案?

fill_in :title,:with => "My answer"

click_button 'Create'

page.should have_text "My answer"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读