On Nov 14, 11:27 am, Robert Walker <[EMAIL PROTECTED]>
wrote:
> Jeff Emminger wrote:
> > it's up to you.  if you're satisfied that the private method is
> > working properly in the course of testing the public methods then
> > fine, otherwise you should be able to call the private method like:
>
> > @my_object.send(:private_method_name, arg1, arg2)
>
> I believe that I read somewhere that a future version of Ruby will be
> "fixed" to not allow using "send" to call private and protected methods.
> Which is really the behavior it should have had in the first place.
> Allowing this breaks the rules of encapsulation.
>
> A test case class is external to the class being tested, and like any
> other class SHOULD NOT have access to private data. Given that a private
> method should only ever be called from inside the confines of the class
> then you must access them via the public API and therefore tested though
> that public API.
>
> Test cases are clients of classes being tested in the same way any other
> class would be a client. This means that your tests, or specs, should
> test the behavior of the class through that same API. Theses tests
> should therefore be complete enough to exercise the "behavior" of the
> underlying private data and methods of the class being tested.
>
> At least this is my own understanding. Feel free to disagree...
> --

Yeah, that's probably the better route.  If you're resorting to
calling a protected or private method directly, then you either aren't
testing the public methods well enough or you haven't designed the
software well enough



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to