ran*_*mor 3 tdd rspec ruby-on-rails capybara
在rspec中使用Capybara测试javascript警报.为什么
expect{
click_link "Cancel my account"
page.driver.browser.switch_to.alert.accept
}.to change(User, :count).by(-1)
Run Code Online (Sandbox Code Playgroud)
失败.然而
puts User.count
expect{
click_link "Cancel my account"
page.driver.browser.switch_to.alert.accept
puts User.count
}.to change(User, :count).by(-1)
Run Code Online (Sandbox Code Playgroud)
没有?我该如何修复测试?没有reload功能User
由于您使用的是javascript规范,因此浏览器/ JS在与测试不同的过程中运行,而且Capybara不知道要等到浏览器请求完成后再继续,因为您在接受后没有发出任何Capybara命令警报.我猜测puts实际数据库的添加时间延迟就足够了.如果你想等待Capybara返回,直到下一页开始加载(因此数据库已经更新),你可以在块结束时做这样的事情:
page.find('head').
Run Code Online (Sandbox Code Playgroud)