POST后的查询返回Nil,除非以下期望(页面)

时间:2015-01-23 22:36:01

标签: ruby-on-rails testing rspec capybara rspec-rails

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

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

如果我在提交后立即执行检查,则会在查询中返回Nil。

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

如果我在页面之后执行它(期望)它会返回相应的对象。

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

1 个答案:

答案 0 :(得分:0)

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