Rspec - 预期 #count 已更改为 1,但已更改为 0

Rspec - expected #count to have changed by 1, but was changed by 0

我有这个功能:

feature "Blog features -", type: :feature, js: true do
  let!(:admin) { FactoryGirl.create(:admin) }

  scenario "Create new Blog" do
    expect do
      sign_in_as_admin(admin)
      visit "/admin/blogs/new"

      fill_in "blog_title", with: "title"
      fill_in "blog_content", with: "lorem ipsum dolor"
      click_button "Save"
    end.to change(Blog, :count).by(1)
  end

end

博客在数据库中正确保存,但测试未通过,我收到此错误:expected #count to have changed by 1, but was changed by 0

我对您的设置了解不多,无法确定它是上游代码中的错误还是仅仅是竞争条件。我的直觉告诉我你在比赛。尝试在 click save 之后添加睡眠,看看是否有帮助。

如果您的测试正在为您的服务器启动第二个进程(我怀疑是这样),那么您的测试正在触发一个请求(将在未来某个时间由服务器处理),然后立即检查 blog算。在您检查博客数时,您的服务器尚未处理该请求。

与其在数据库级别检查博客数量,我建议检查页面上的文本或元素。用户正在从保存中获得一些反馈吗?断言反对。