【发布时间】:2021-01-18 04:27:47
【问题描述】:
我的场景在 posts_spec 文件中的删除 Post 记录如下所示:
注意:我已将默认的transactional fixture属性设置为false,因此删除场景中可以使用Post记录 之前在创建场景中创建的。
RSpec.feature "Signing Post", type: :feature, driver: :selenium_chrome do
scenario "Create Post" do
......
end
scenario "Delete Post" do
visit '/posts'
expect{
within 'table' do
accept_confirm do
find_link(class: ['tester']).click
end
# When not using sleep, the Post.count is not changed and remains the same
sleep(1)
end
}.to change {Post.count}.by(-1)
expect(page).to have_content("Post was successfully destroyed.")
end
end
问题: 如您所见,我在代码中使用了 sleep(1)。这样做的原因是,没有睡眠代码,程序似乎没有检测到记录已被删除。但是如果我休眠/等待一段时间,然后检查记录,程序现在检测到记录已被删除,并且测试成功运行,因为一条记录已被删除。
是否因为 accept_confirm 操作需要一些时间来处理,并且我们必须等待确认被接受,然后在声明数据库中的任何类型的更改之前删除记录?
【问题讨论】:
-
嗨,谢里夫,你调查过这个吗? stackoverflow.com/questions/23554882/…
标签: ruby-on-rails ruby selenium capybara