【发布时间】:2020-07-15 22:07:23
【问题描述】:
我遇到了一个奇怪的问题,我正在测试一个控制器,该控制器有一个使用缓存的过程。测试失败,但如果我在执行缓存的方法中执行binding.pry,则测试通过。
包含缓存和 binding.pry 的方法示例:
def method_example:
data = Rails.cache.fetch(cache_key) do
ProcedureService.new(params).generate
end
binding.pry
data
end
测试示例:
it "reverts record amount" do
expect(record.amount).to eq((original_amount + other_amount).to_d)
end
缓存是通过 redis_store 完成的。
在开发环境中完成后,它可以正常工作。我不明白为什么它在添加塞子时失败但通过了?似乎这可能与获取缓存所需的时间有关
更新
使用 sleep 代替 binding.pry 也会使测试通过,所以我可以假设这是一个时间问题。究竟是什么问题?我该如何管理它?
【问题讨论】:
标签: ruby-on-rails caching redis rspec ruby-on-rails-5