【发布时间】:2014-07-02 16:13:34
【问题描述】:
我在 Gallery 上设置了一个标准计数器缓存来跟踪其照片。计数器缓存按照 Rails 默认命名为 photos_count。
在我的图库规范中,我像这样测试计数器缓存:
it "updates 'photos_count' counter cache" do
gallery = create(:gallery_with_photos, with_photos_count: 3)
gallery.reload # Fails without this
expect(gallery.photos_count).to eq 3
expect {
gallery.photos.first.destroy
gallery.reload # Fails without this
}.to change{ gallery.photos_count }.by(-1)
gallery.photos << create(:photo)
expect {
gallery.save!
gallery.reload # Fails without this
}.to change { gallery.photos_count }.by(1)
end
这有效,但仅适用于对 gallery.reload 的调用。为什么这个规范没有调用reload 就失败了。每次失败都是因为photos_count没有变化。
注意with_photos_count 是工厂使用的瞬态属性。
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-4 rspec counter-cache