【发布时间】:2015-07-30 15:20:56
【问题描述】:
我正在编写的一项测试遇到问题。我有一个预算模型,其中承诺(列)是在回调 after_create 之后从名为 calculate_budget 的方法计算出来的。
在正常的开发模式下,应用程序正在保存到数据库中,但在当前测试中,我抓取了一些其他预算记录,其中承诺为 0 而不是计算的承诺。
这里有一些代码
before(:each) do
@member1 = FactoryGirl.create(:member)
@member2 = FactoryGirl.create(:member, id: "2")
income = FactoryGirl.create(:income, member: @member1)
donation1 = FactoryGirl.create(:donation1)
donation2 = FactoryGirl.create(:donation2)
@budget = FactoryGirl.create(:budget, donation: donation1, member: @member1)
end
...
..
it "description" do
receipt1 = Receipt.create!(id: 1, date: '2015-01-01', member: @member1)
receipt2 = Receipt.create!(id: 2, date: '2015-02-01', member: @member1)
receipt1.items << ReceiptItem.create!(id: 1, donation_id: 1, amount: 10, receipt_id: 1)
receipt2.items << ReceiptItem.create!(id: 2, donation_id: 1, amount: 20, receipt_id: 2)
budget2 = FactoryGirl.create(:budget, title: 'budget2', start_date: '2016-01-01', end_date: '2016-12-31', donation_id: 1, member: @member1)
ap "#budget promise => #{@budget.title} promise #{@budget.promise} remaining #{@budget.remainingPromiseCurrentBudget}"
ap "#budget promise => #{budget2.title} promise #{budget2.promise} remaining #{budget2.remainingPromiseCurrentBudget}"
@budget.save
budget2.save
ap Budget.all
# debugger
ap "budget2.get_all_old_budgets: #{budget2.get_all_old_budgets}"
expect(budget2.remainingPromiseCurrentBudget).to be(210)
end
知道为什么没有正确保存记录吗?
更新
记录保存到测试数据库,但只是计算出的 promise 值,它没有更新/保存到测试数据库。如前所述,开发数据库正在将值正确保存到数据库。
【问题讨论】:
-
我可以建议两件事:1. 在测试中使用
save!- 我的意思是@budget.save!和budget2.save!2. 检查(并可能发布)你的方法remainingPromiseCurrentBudget- 也许有些东西缓存了价值。 PS 我在您的代码中没有看到it块。我希望你的帖子中没有提到这一点。 -
@gotva thx 的答案,但它对
save!没有帮助,我刚刚错过了it块 -
remainingPromiseCurrentBudget方法正确且没有错误
标签: ruby-on-rails-4 testing rspec factory-bot