2012-09-13 50 views
0

我的導軌模型中有一些私有方法。我想單獨指定它(使用rspec)。spec'ing私有方法

我做這樣的事情

class TestModelA < ModelA 
    def public_wrapper_method_A 
     private_method_A_from_ModelA 
    end 
    end 

,我寫TestModelA#public_wrapper_method_A

我覺得這是很好的情況下書寫規範的私有方法規範。

爲這些私有方法編寫測試的最佳方法是什麼?

你們覺得怎麼樣?優點缺點?

回答

0

你不必包裝你的類來測試私有方法。您可以改用send

object.send(:foo_private_method) 
1

我通常預留context組私有方法,然後設置一個describes塊爲每個方法。在該塊中,我定義了一個輔助方法來調用私有方法,然後it塊使用call_xxx方法來訪問私有方法。

context "private methods" do 
    describe "#some_private_method" do 
    def call_some_private_method 
     some_obj.send(:some_private_method) 
    end 

    it "should return 'something'" do 
     call_some_private_method.should == 'something' 
    end 
    end 
end