ruby-on-rails 测试rails计数器缓存的更好方法?

e7arh2l6  于 2023-04-22  发布在  Ruby
关注(0)|答案(1)|浏览(133)

在RSpec中测试rails计数器缓存有没有比这更好/更简单的方法:

let(:question) { create(:question) }

it "has a counter cache" do
  expect {
    create(:answer, question_id: question.id, user_id: question.user.id)
  }.to change {
    question.reload.answers_count
   }.by(1)
end

另外,在这里的工厂中使用#create而不是#build是不是一个好的做法?因为仅仅构建它会抛出错误(因为工厂的必需字段不会在构建时设置)。

hzbexzde

hzbexzde1#

Rails已经测试了递增计数器。我们应该做的是在启用counter_cache的情况下测试Answer的belongs_to :question关联。

RSpec.describe Answer, type: :model do
  it { should belong_to(:question).counter_cache(true) }
end

相关问题