Back

RAILS中如何测试 private method. ( how to test private methods in Rails. )

发布时间: 2014-01-18 02:46:00

modify your spec_helper.rb and add the code below:

#  for testing the private method.
#  EXAMPLE:
#  describe_private User do
#    describe "about the role-permission" do
#      it "should ..." do
#        true.should == true
#      end
#    end
#  end
#  p.s. for another approach, please use: myobject.send(:method_name, args)
#  see:
#  http://stackoverflow.com/questions/267237/whats-the-best-way-to-unit-test-protected-private-met
def describe_private *args, &block
  example = describe *args, &block
  clazz = args[0]
  if clazz.is_a? Class
    saved_private_instance_methods = clazz.private_instance_methods
    example.before do
      clazz.class_eval { public *saved_private_instance_methods }
    end 
    example.after do
      clazz.class_eval { private *saved_private_instance_methods }
    end 
  end 
end

refer to: http://sg552.iteye.com/blog/758130

Back