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
算。在您检查博客数时,您的服务器尚未处理该请求。
与其在数据库级别检查博客数量,我建议检查页面上的文本或元素。用户正在从保存中获得一些反馈吗?断言反对。
我有这个功能:
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
算。在您检查博客数时,您的服务器尚未处理该请求。
与其在数据库级别检查博客数量,我建议检查页面上的文本或元素。用户正在从保存中获得一些反馈吗?断言反对。