[rspec-users] spec-ing private methods?

Nicolás Sanguinetti godfoca at gmail.com
Wed Oct 14 16:24:45 EDT 2009


On Wed, Oct 14, 2009 at 5:49 PM, Scott Taylor <scott at railsnewbie.com> wrote:
>
> On Oct 14, 2009, at 3:36 PM, Joaquin Rivera Padron wrote:
>
> hello there,
> how do you tipically spec private methods? The thing is Ï have something
> like this:
>
> def some_method
>    complex_method + other_complex_methods
> end
>
> private
> def complex_method...
> def other_complex_methods ...
>
> and the two complex methods can get really tricky to get right, I would like
> to be able to write specs for them, how do you do that? I mean I cannot do:
>
> object.some_private_method
>
> You have a few options:
> 1. Make the method public in the object you are testing
> 2. Make the method public in the test case
> 3. Don't test the method
> 4. Use __send__ or (send) to call it.
> 5. Refactor private methods to a new object, and make the methods public in
> that object.
> Most of those options suck (esp. 1, 2, 3, & 4) - usually it represents a
> design flaw (you are doing too much in your class).
> Scott

3 is ok.

A "private" method just means it's an implementation detail that is
outside of your API. If you are aiming to test the behavior of your
API, then you don't care about implementation details.

-foca

>
> am I?
>
> thanks in advance,
> joaquin
>
> --
> www.least-significant-bit.com
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list