2014-03-13 52 views
0

我有一個單獨的類,我們稱之爲NamesListRSpec的對象構造

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 

在我的天賦,我想測試,當緩存設置 - 獲取實例不會發出DB連接。我的規格:

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 - 我的測試通過。我該如何解決它?

回答