我有一个单身课程,我们称之为NamesList
:
class NamesList
include Singleton
def initialize
if names_cached?
output_names
else
cache_names
end
end
...
private
def cache_names
Rails.cache.write('some_names_list', NamesClass.some_scope)
end
end
在我的规范中,我想测试一下设置缓存时 - 让实例不会发出数据库连接。我的规格:
it "doesn't call database if cache is set" do
Rails.cache.exist?('some_names_list', :whatever)
expect(NamesClass).to receive(:some_scope)
NamesList.instance
end
它不起作用。但是,如果我将initialize
方法的内容移动到其他方法(例如,.some_method
),那么当我执行NamesList.instance.some_method
时 - 我的测试通过了。我该如何解决?
答案 0 :(得分:0)
哦,对我而言!已找到解决方案: https://stackoverflow.com/a/14366444/1870446
应该只是ActiveRecord::Base.should_not_receive(:establish_connection)