在 POST returns 之后查询 Nil 除非跟随 expect(page)

Query after POST returns Nil unless following expect(page)

提交 POST 后,我检查数据库以查看它是否已存储。

feature 'foo' do
  scenario 'bar', :js => true do
    navigate_to_form
    within '.form-class' do
      fill_form
      click_on 'Save'
    end
    ...

如果我在提交后立即执行检查,它 returns 查询为零。

expect(ModelName.last.attribute).to eq("attribute_value")
  => undefined method 'attribute' for nil:NilClass

如果我在页面之后执行它(预期)它 returns 适当的对象。

expect(page).to have_text('text_on_page')
expect(ModelName.last.attribute).to eq("attribute_value")
  =>true

服务器 运行 在一个单独的线程中。由于 click on 'Save' 不等待响应,当您立即检查数据库时,服务器还没有机会完成它的工作。当您等待文本出现时,您就知道服务器更新已完成。