规范私人方法

时间:2012-09-13 19:48:53

标签: ruby-on-rails ruby rspec

我的rails模型中有一些私有方法。我想单独指出它(使用rspec)。

我这样做

  class TestModelA < ModelA
    def public_wrapper_method_A
      private_method_A_from_ModelA
    end
  end 

我为TestModelA编写规范#public_wrapper_method_A

我认为为私有方法编写规范是有好处的。

为这些私有方法编写测试的最佳方法是什么。

你觉得怎么样?优点/缺点?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您不必将您的类包装起来测试私有方法。您可以改为使用send

object.send(:foo_private_method)