0
試圖測試答案上的投票是否更新其分數。 得分更新,但它不是相同的對象進行測試。 (每個投票都有自己的可投票應答對象,具有相同的.id) 因此規範失敗。 RSpec的測試過程中RSpec記錄屬性不更新
PRY控制檯:
> Answer.first
=> #<Answer:0x000000087b6418 id: 1, (...) score: 2>
> answer
=> #<Answer:0x000000081bea88 id: 1, (...) score: 0>
vote_spec.rb
answer ||= FactoryGirl.create(:answer)
vote = FactoryGirl.create(:vote, like: true, user_id: 1, voteable_id: answer.id, voteable_type: "Answer")
vote2 = FactoryGirl.create(:vote, like: true, user_id: 2, voteable_id: answer.id, voteable_type: "Answer")
vote3 = FactoryGirl.create(:vote, like: true, user_id: 3, voteable_id: answer.id, voteable_type: "Answer")
vote4 = FactoryGirl.create(:vote, user_id: 4, voteable_id: answer.id, voteable_type: "Answer")
expect(answer.score).to eq(2)
vote.rb
after_create :set_voteable_score
private
def set_voteable_score
self.voteable.update_column(:score, count_score(self.voteable))
true
binding.pry
end
def count_score(voteable)
votes = voteable.votes.all
votes.where(like: true).count - votes.where(like: false).count
end
所以如果我用所有投票(vote,vote2,vote3 ...)檢查vote.voteable.score,每個都會返回一個不同的可投票對象,而vote_spec.rb中的答案不會更新。
爲什麼會出現這種行爲(存在多個具有相同ID的記錄)?